[2026-06-17 04:50:10.713] [INFO ] [Ysp.Scheduler] Started. SFTP in 22h 9m, MIS in 2h 9m [2026-06-17 04:50:10.771] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 04:50:10.791] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 04:50:12.497] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 04:50:12.497] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 04:50:12.497] [INFO ] Building initial filter cache... [2026-06-17 04:50:12.508] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.4ms idle=501.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-06-17 04:50:12.515] [DEBUG] QUERY OK source="filter_usage" db=0.6ms queue=0.7ms idle=265.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-06-17 04:50:12.516] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 04:50:12.648] [INFO ] Device phoenix_client_Sham connected [2026-06-17 04:50:12.678] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 04:50:12.690] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 04:50:13.509] [DEBUG] Tzdata polling for update. [2026-06-17 04:50:14.558] [DEBUG] Tzdata polling shows the loaded tz database is up to date. [2026-06-17 04:50:25.872] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 39µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "VzETGCtEBExddVQ5HgVoAj8OZwdxKiQygfyhI0h5jL8HTL0gpiPdHfcZ", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "1", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 04:50:26.414] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 04:50:26.443] [DEBUG] QUERY OK source="users_tokens" db=1.1ms queue=1.6ms idle=1984.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 04:50:26.429719Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 04:50:26.470] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.8ms idle=468.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 04:50:26.476] [DEBUG] QUERY OK source="app_packages" db=0.3ms queue=1.4ms idle=90.0ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 04:50:26.487] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=16.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 04:50:26.496] [DEBUG] QUERY OK source="terminal_groups" db=0.5ms queue=0.9ms idle=19.0ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 04:50:26.496] [DEBUG] Replied in 87ms [2026-06-17 04:50:26.502] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 04:50:26.503] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=14.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 04:50:26.504] [DEBUG] Replied in 1ms [2026-06-17 04:50:27.279] [INFO ] GET /terminals [2026-06-17 04:50:27.302] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 04:50:27.313] [DEBUG] QUERY OK source="users_tokens" db=1.4ms idle=871.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 04:50:27.311792Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 04:50:27.322] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 04:50:27.323] [DEBUG] QUERY OK source="app_packages" db=0.5ms idle=819.3ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 04:50:27.324] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 04:50:27.325] [DEBUG] QUERY OK source="terminal_groups" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 04:50:27.326] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 04:50:27.337] [INFO ] Sent 200 in 57ms [2026-06-17 04:50:37.148] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:50:37.148] [INFO ] Incoming JSON payload: {"oid":"a3473554-3442-496d-a31e-8e2951ed1284","sn":"98251226730001","uploadTime":"2026-06-17T12:53:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"ram_free_mb","value":"1008","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T12:53:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:53:50Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.reso (truncated) [2026-06-17 04:50:37.149] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a3473554-3442-496d-a31e-8e2951ed1284", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:53:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:53:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:53:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:53:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:53:50Z", "value" => "1008"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:53:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:53:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:53:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:53:50Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:53:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:53:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:53:50Z", "vendor" => "morefun"} [2026-06-17 04:50:37.149] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 04:50:37.156] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:50:37.158] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 04:50:37.164] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.7ms idle=754.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-06-17 04:50:37.166] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.4ms idle=164.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-06-17 04:50:37.166] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 04:50:37.167] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.5ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 04:50:37.177] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:50:37.189] [DEBUG] QUERY OK source="tms_terminals" db=7.9ms queue=0.4ms idle=11.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 04:50:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:50:37.194] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:50:37.195] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=27.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:627 [2026-06-17 04:50:37.200] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms idle=9.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:50:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:50:37.216] [DEBUG] QUERY OK db=5.6ms queue=0.4ms idle=15.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a3473554-3442-496d-a31e-8e2951ed1284", "2026-06-17T12:53:50Z", ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:50:37.222] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39003, oid: "a3473554-3442-496d-a31e-8e2951ed1284", upload_time: "2026-06-17T12:53:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]} [2026-06-17 04:50:37.223] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:53:50Z", "value" => "morefun"} [2026-06-17 04:50:37.229] [DEBUG] QUERY OK db=4.6ms queue=1.7ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "morefun", "vendor", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303007, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.230] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:53:50Z", "value" => "kiosk_launcher"} [2026-06-17 04:50:37.236] [DEBUG] QUERY OK db=5.5ms queue=0.4ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "kiosk_launcher", "model", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303008, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.236] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:53:50Z", "value" => "1.0"} [2026-06-17 04:50:37.241] [DEBUG] QUERY OK db=4.9ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "1.0", "app_version", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303009, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.242] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:53:50Z", "value" => "13"} [2026-06-17 04:50:37.246] [DEBUG] QUERY OK db=4.5ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "13", "android_version", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303010, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.247] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:53:50Z", "value" => "1008"} [2026-06-17 04:50:37.252] [DEBUG] QUERY OK db=4.4ms idle=5.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "1008", "ram_free_mb", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303011, itemkey: "ram_free_mb", value: "1008", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.252] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:53:50Z", "value" => "WIFI"} [2026-06-17 04:50:37.257] [DEBUG] QUERY OK db=4.6ms idle=5.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "WIFI", "network_type", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303012, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.257] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:53:50Z", "value" => "true"} [2026-06-17 04:50:37.262] [DEBUG] QUERY OK db=4.5ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "true", "kiosk_active", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303013, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.263] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:53:50Z", "value" => ""} [2026-06-17 04:50:37.268] [DEBUG] QUERY OK db=4.9ms queue=0.7ms idle=5.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:53:50Z", "sim_operator", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303014, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.269] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"} [2026-06-17 04:50:37.274] [DEBUG] QUERY OK db=5.2ms idle=6.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "UNKNOWN", "sim_number", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303015, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.275] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"} [2026-06-17 04:50:37.282] [DEBUG] QUERY OK db=6.6ms queue=0.4ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "UNKNOWN", "sim_iccid", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303016, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.283] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"} [2026-06-17 04:50:37.289] [DEBUG] QUERY OK db=6.0ms idle=8.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "UNKNOWN", "sim_imsi", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303017, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.290] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"} [2026-06-17 04:50:37.296] [DEBUG] QUERY OK db=5.3ms idle=8.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "UNKNOWN", "sim_iccid2", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303018, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.296] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:53:50Z", "value" => "UNKNOWN"} [2026-06-17 04:50:37.304] [DEBUG] QUERY OK db=7.4ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "UNKNOWN", "sim_imsi2", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303019, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.304] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:53:50Z", "value" => "5"} [2026-06-17 04:50:37.311] [DEBUG] QUERY OK db=6.5ms idle=8.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "5", "data_usage_mb", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303020, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.312] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:53:50Z", "value" => "0"} [2026-06-17 04:50:37.316] [DEBUG] QUERY OK db=4.5ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "0", "mobile_data_mb", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303021, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.317] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:53:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 04:50:37.327] [DEBUG] QUERY OK db=9.3ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:53:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39003, ~N[2026-06-17 04:50:37], ~N[2026-06-17 04:50:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:50:37.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303022, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T12:53:50Z", message: nil, status_log_id: 39003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:50:37], updated_at: ~N[2026-06-17 04:50:37]}} [2026-06-17 04:50:37.330] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=12.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:50:37.334] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:51:07.252] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:51:07.252] [INFO ] Incoming JSON payload: {"oid":"2fa0fd73-bb6b-4ff7-81ce-c0e6d29f05f0","sn":"98251226730001","uploadTime":"2026-06-17T12:54:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"ram_free_mb","value":"1006","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T12:54:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:54: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.reso (truncated) [2026-06-17 04:51:07.253] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2fa0fd73-bb6b-4ff7-81ce-c0e6d29f05f0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:54:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:54:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:54:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:54:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:54:20Z", "value" => "1006"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:54:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:54:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:54:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:54:20Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:54:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:54: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:54:20Z", "vendor" => "morefun"} [2026-06-17 04:51:07.253] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 04:51:07.253] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:51:07.253] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 04:51:07.255] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=1252.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-06-17 04:51:07.256] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=770.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-06-17 04:51:07.256] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 04:51:07.257] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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:98 [2026-06-17 04:51:07.257] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:51:07.264] [DEBUG] QUERY OK source="tms_terminals" db=5.9ms queue=0.3ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 04:51:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:51:07.264] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:51:07.265] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.2ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 04:51:07.271] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:51:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:51:07.278] [DEBUG] QUERY OK db=5.7ms queue=0.3ms idle=6.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2fa0fd73-bb6b-4ff7-81ce-c0e6d29f05f0", "2026-06-17T12:54:20Z", ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:51:07.278] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39004, oid: "2fa0fd73-bb6b-4ff7-81ce-c0e6d29f05f0", upload_time: "2026-06-17T12:54:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]} [2026-06-17 04:51:07.278] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:54:20Z", "value" => "morefun"} [2026-06-17 04:51:07.284] [DEBUG] QUERY OK db=6.2ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "morefun", "vendor", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303023, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.285] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:54:20Z", "value" => "kiosk_launcher"} [2026-06-17 04:51:07.290] [DEBUG] QUERY OK db=4.7ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "kiosk_launcher", "model", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303024, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.291] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:54:20Z", "value" => "1.0"} [2026-06-17 04:51:07.297] [DEBUG] QUERY OK db=4.7ms queue=0.1ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "1.0", "app_version", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303025, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.297] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:54:20Z", "value" => "13"} [2026-06-17 04:51:07.304] [DEBUG] QUERY OK db=6.5ms idle=7.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "13", "android_version", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303026, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.305] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:54:20Z", "value" => "1006"} [2026-06-17 04:51:07.311] [DEBUG] QUERY OK db=5.2ms queue=0.1ms idle=7.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "1006", "ram_free_mb", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303027, itemkey: "ram_free_mb", value: "1006", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.311] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:54:20Z", "value" => "WIFI"} [2026-06-17 04:51:07.316] [DEBUG] QUERY OK db=4.9ms idle=6.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "WIFI", "network_type", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303028, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.316] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:54:20Z", "value" => "true"} [2026-06-17 04:51:07.323] [DEBUG] QUERY OK db=5.9ms idle=6.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "true", "kiosk_active", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303029, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.323] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:54:20Z", "value" => ""} [2026-06-17 04:51:07.329] [DEBUG] QUERY OK db=4.6ms queue=0.5ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:54:20Z", "sim_operator", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303030, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.329] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"} [2026-06-17 04:51:07.335] [DEBUG] QUERY OK db=5.2ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "UNKNOWN", "sim_number", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303031, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.335] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"} [2026-06-17 04:51:07.342] [DEBUG] QUERY OK db=5.9ms idle=6.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "UNKNOWN", "sim_iccid", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303032, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.342] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"} [2026-06-17 04:51:07.348] [DEBUG] QUERY OK db=5.2ms idle=7.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "UNKNOWN", "sim_imsi", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303033, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.348] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"} [2026-06-17 04:51:07.353] [DEBUG] QUERY OK db=4.5ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "UNKNOWN", "sim_iccid2", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303034, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.353] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:54:20Z", "value" => "UNKNOWN"} [2026-06-17 04:51:07.359] [DEBUG] QUERY OK db=5.6ms idle=5.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "UNKNOWN", "sim_imsi2", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303035, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.359] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:54:20Z", "value" => "5"} [2026-06-17 04:51:07.366] [DEBUG] QUERY OK db=6.3ms idle=6.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "5", "data_usage_mb", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303036, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.366] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:54:20Z", "value" => "0"} [2026-06-17 04:51:07.371] [DEBUG] QUERY OK db=4.5ms idle=7.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:20Z", "0", "mobile_data_mb", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303037, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:07.373] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:54: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 04:51:07.381] [DEBUG] QUERY OK db=7.5ms idle=7.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39004, ~N[2026-06-17 04:51:07], ~N[2026-06-17 04:51:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:07.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303038, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T12:54:20Z", message: nil, status_log_id: 39004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:07], updated_at: ~N[2026-06-17 04:51:07]}} [2026-06-17 04:51:31.772] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 40µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "A2cwAVsZIUkAcT0kOwZgNTgvbxRAH34i30Zq9mM07HQUqO8PwHXwyS9J", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 04:51:31.935] [INFO ] GET /images/favicon.png [2026-06-17 04:51:31.974] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/Shamanth/prverification/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/Shamanth/prverification/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_continue/2 (stdlib 5.2.3.2) gen_server.erl:1085: :gen_server.try_handle_continue/3 (stdlib 5.2.3.2) gen_server.erl:995: :gen_server.loop/7 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-06-17 04:51:32.338] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 04:51:32.339] [DEBUG] QUERY OK source="users_tokens" db=0.7ms idle=1886.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 04:51:32.338767Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 04:51:32.340] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1338.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 04:51:32.341] [DEBUG] QUERY OK source="app_packages" db=0.3ms idle=796.3ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 04:51:32.342] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.3ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 04:51:32.343] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 04:51:32.343] [DEBUG] Replied in 5ms [2026-06-17 04:51:32.343] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 04:51:32.345] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 04:51:32.345] [DEBUG] Replied in 1ms [2026-06-17 04:51:36.958] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:51:36.959] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T12:54:50Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T12:54:50Z","value":"60"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T12:54:50Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T12:54:50Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T12:54:50Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T12:54:50Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T12:54:50Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T12:54:50Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-06-17T12:54:50Z","vendor":"MoreFun"} [2026-06-17 04:51:36.959] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:54:50Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:54:50Z", "value" => "60"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:54:50Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:54:50Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:54:50Z", "vendor" => "MoreFun"} [2026-06-17 04:51:36.959] [INFO ] Extracted versions for 98251226730001: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 04:51:36.959] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:51:36.959] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-06-17 04:51:36.962] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=958.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-06-17 04:51:36.962] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=405.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-06-17 04:51:36.971] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=3.6ms 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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 04:51:36.980] [DEBUG] QUERY OK source="parameter_definitions" db=2.0ms queue=2.0ms idle=13.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-06-17 04:51:36.992] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=1.3ms idle=18.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:153 [2026-06-17 04:51:37.024] [DEBUG] QUERY OK source="pos_merchant" db=2.1ms queue=22.4ms idle=18.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [123] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 04:51:37.034] [DEBUG] QUERY OK db=0.7ms queue=0.5ms idle=1031.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 ["390888230000000"] [2026-06-17 04:51:37.035] [INFO ] ParamsZipBuilder: Merchant info for merchantid=390888230000000 - business_name=nn, QR_USE_SSL=1, softpos_uuid= [2026-06-17 04:51:37.043] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms queue=1.6ms idle=48.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 ["88823510"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 04:51:37.043] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=88823510, using defaults [2026-06-17 04:51:37.052] [DEBUG] QUERY OK source="address" db=0.4ms queue=1.0ms idle=26.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` = ?) [326] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 04:51:37.053] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="390888230000000" [2026-06-17 04:51:37.068] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-06-17 04:51:37.090] [DEBUG] QUERY OK db=8.4ms queue=2.4ms idle=35.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c546deb90edc1d1abe561b60c7e2a1ad33ba344a75556e100fc386d4706e51b3", 1475, 931, ~U[2026-06-17 04:51:37Z], "priv/ota/98251226730001/params.zip", 33, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 04:51:37.090] [INFO ] AutoPushService: Created push log 29569 for MF919 params.zip [2026-06-17 04:51:37.098] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1475, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 04:51:37.098] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:51:37.103] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-06-17 04:51:37.113] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=2.6ms idle=58.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-06-17 04:51:37.119] [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-06-17 04:51:37.131] [DEBUG] QUERY OK db=9.8ms queue=0.4ms idle=30.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2ee54f320935d5d3c8d6bd312173f1f0e7f87fd88ead59bcc56f11aee19f475b", 4066, 17947, ~U[2026-06-17 04:51:37Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 04:51:37.131] [INFO ] AutoPushService: Created push log 29570 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 04:51:37.131] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 4066, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 04:51:37.132] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:51:37.132] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-06-17 04:51:37.133] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=18.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-06-17 04:51:37.137] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-06-17 04:51:37.139] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.1ms idle=6.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-06-17 04:51:37.139] [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-06-17 04:51:37.180] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 04:51:37.180] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:51:37.181] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:51:37.182] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=48.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-06-17 04:51:37.182] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 04:51:37.182] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-06-17 04:51:37.183] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms idle=43.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:98 [2026-06-17 04:51:37.230] [DEBUG] QUERY OK source="tms_terminals" db=5.8ms queue=40.7ms idle=1.8ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-06-17 04:51:37], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 04:51:37.230] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:51:37.230] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 04:51:37.231] [INFO ] Processing terminal_updated event for terminal 33 [2026-06-17 04:51:37.231] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 04:51:37.230] [INFO ] Event published: terminal_updated [2026-06-17 04:51:37.232] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=0.4ms idle=47.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-06-17 04:51:37], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 04:51:37.233] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms 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 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 04:51:37.243] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.7ms idle=8.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-06-17 04:51:37.243] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-06-17 04:51:37.278] [DEBUG] QUERY OK source="tms_terminals" db=4.7ms queue=41.0ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", ~N[2026-06-17 04:51:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:51:37.278] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:51:37.279] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=35.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:627 [2026-06-17 04:51:37.325] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms queue=40.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:51:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:51:37.331] [DEBUG] QUERY OK db=5.3ms idle=46.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-06-17T12:54:50Z", ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:51:37.331] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39005, oid: "organization_id", upload_time: "2026-06-17T12:54:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]} [2026-06-17 04:51:37.332] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:54:50Z", "value" => "online"} [2026-06-17 04:51:37.337] [DEBUG] QUERY OK db=4.8ms queue=0.6ms idle=6.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T12:54:50Z", "online", "status", 39005, ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:37.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303039, itemkey: "status", value: "online", timestamp: "2026-06-17T12:54:50Z", message: "Terminal status update", status_log_id: 39005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]}} [2026-06-17 04:51:37.338] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-06-17 04:51:37.338] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:51:37.338] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:54:50Z", "value" => "60"} [2026-06-17 04:51:37.345] [DEBUG] QUERY OK db=5.5ms queue=0.5ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T12:54:50Z", "60", "battery", 39005, ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:37.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303040, itemkey: "battery", value: "60", timestamp: "2026-06-17T12:54:50Z", message: "Battery level", status_log_id: 39005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]}} [2026-06-17 04:51:37.345] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:54:50Z", "value" => "online"} [2026-06-17 04:51:37.351] [DEBUG] QUERY OK db=5.6ms idle=8.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T12:54:50Z", "online", "network", 39005, ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:37.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303041, itemkey: "network", value: "online", timestamp: "2026-06-17T12:54:50Z", message: "Network connectivity", status_log_id: 39005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]}} [2026-06-17 04:51:37.352] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-06-17 04:51:37.352] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:54:50Z", "value" => "0"} [2026-06-17 04:51:37.352] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:51:37.358] [DEBUG] QUERY OK db=5.8ms queue=0.1ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T12:54:50Z", "0", "cpu", 39005, ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:37.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303042, itemkey: "cpu", value: "0", timestamp: "2026-06-17T12:54:50Z", message: "CPU usage percentage", status_log_id: 39005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]}} [2026-06-17 04:51:37.359] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""} [2026-06-17 04:51:37.404] [DEBUG] QUERY OK db=4.4ms queue=40.5ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T12:54:50Z", "parameter_config", 39005, ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:37.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303043, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T12:54:50Z", message: "Current parameters version", status_log_id: 39005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]}} [2026-06-17 04:51:37.404] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""} [2026-06-17 04:51:37.450] [DEBUG] QUERY OK db=4.8ms queue=40.7ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T12:54:50Z", "emv_config", 39005, ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:37.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303044, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T12:54:50Z", message: "Current EMV config version", status_log_id: 39005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]}} [2026-06-17 04:51:37.451] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""} [2026-06-17 04:51:37.456] [DEBUG] QUERY OK db=5.4ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T12:54:50Z", "keys_config", 39005, ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:37.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303045, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T12:54:50Z", message: "Current keys config version", status_log_id: 39005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]}} [2026-06-17 04:51:37.457] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""} [2026-06-17 04:51:37.462] [DEBUG] QUERY OK db=5.1ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T12:54:50Z", "application", 39005, ~N[2026-06-17 04:51:37], ~N[2026-06-17 04:51:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:37.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303046, itemkey: "application", value: nil, timestamp: "2026-06-17T12:54:50Z", message: "Current application version", status_log_id: 39005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:37], updated_at: ~N[2026-06-17 04:51:37]}} [2026-06-17 04:51:37.464] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:51:37.467] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T12:54:50Z"} [2026-06-17 04:51:37.469] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:51:37.473] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:54:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 4, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{"phoenix_client_Sham" => true}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:51:37.898] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:51:37.898] [INFO ] Incoming JSON payload: {"oid":"19a8a406-11a6-49da-ad50-9403961c877c","sn":"98251226730001","uploadTime":"2026-06-17T12:54:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T12:54:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:54:50Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 04:51:37.899] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "19a8a406-11a6-49da-ad50-9403961c877c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:54:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:54:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:54:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:54:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:54:50Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:54:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:54:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:54:50Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:54:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:54:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:54:50Z", "vendor" => "morefun"} [2026-06-17 04:51:37.899] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 04:51:37.899] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:51:37.899] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 04:51:37.900] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.2ms idle=435.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-06-17 04:51:37.901] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=341.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-06-17 04:51:37.901] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 04:51:37.902] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms idle=1.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:98 [2026-06-17 04:51:37.948] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms queue=40.8ms idle=1.7ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["morefun", "kiosk_launcher", ~N[2026-06-17 04:51:37], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 04:51:37.949] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:51:37.949] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 04:51:37.949] [INFO ] Event published: terminal_updated [2026-06-17 04:51:37.949] [INFO ] Processing terminal_updated event for terminal 33 [2026-06-17 04:51:37.949] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 04:51:37.951] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.3ms queue=0.1ms idle=47.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-06-17 04:51:37], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 04:51:37.952] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 04:51:37.954] [DEBUG] QUERY OK source="terminal_group_rules" db=0.8ms queue=0.3ms 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-06-17 04:51:37.954] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-06-17 04:51:38.003] [DEBUG] QUERY OK source="tms_terminals" db=9.1ms queue=42.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "morefun", "kiosk_launcher", ~N[2026-06-17 04:51:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:51:38.003] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:51:38.004] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 04:51:38.051] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms queue=41.6ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:51:38], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:51:38.059] [DEBUG] QUERY OK db=7.5ms idle=40.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "19a8a406-11a6-49da-ad50-9403961c877c", "2026-06-17T12:54:50Z", ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:51:38.059] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39006, oid: "19a8a406-11a6-49da-ad50-9403961c877c", upload_time: "2026-06-17T12:54:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]} [2026-06-17 04:51:38.060] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:54:50Z", "value" => "morefun"} [2026-06-17 04:51:38.108] [DEBUG] QUERY OK db=7.9ms queue=40.6ms idle=9.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "morefun", "vendor", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303047, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.109] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:54:50Z", "value" => "kiosk_launcher"} [2026-06-17 04:51:38.155] [DEBUG] QUERY OK db=4.7ms queue=41.3ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "kiosk_launcher", "model", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303048, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.156] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:54:50Z", "value" => "1.0"} [2026-06-17 04:51:38.162] [DEBUG] QUERY OK db=5.9ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "1.0", "app_version", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303049, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.162] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:54:50Z", "value" => "13"} [2026-06-17 04:51:38.172] [DEBUG] QUERY OK db=9.6ms idle=7.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "13", "android_version", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303050, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.173] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:54:50Z", "value" => "920"} [2026-06-17 04:51:38.180] [DEBUG] QUERY OK db=6.2ms idle=11.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "920", "ram_free_mb", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303051, itemkey: "ram_free_mb", value: "920", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.180] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:54:50Z", "value" => "WIFI"} [2026-06-17 04:51:38.187] [DEBUG] QUERY OK db=5.9ms idle=8.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "WIFI", "network_type", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303052, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.188] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:54:50Z", "value" => "true"} [2026-06-17 04:51:38.195] [DEBUG] QUERY OK db=5.5ms queue=0.1ms idle=9.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "true", "kiosk_active", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303053, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.196] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:54:50Z", "value" => ""} [2026-06-17 04:51:38.203] [DEBUG] QUERY OK db=6.4ms idle=9.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:54:50Z", "sim_operator", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303054, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.203] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"} [2026-06-17 04:51:38.209] [DEBUG] QUERY OK db=5.6ms idle=8.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "UNKNOWN", "sim_number", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303055, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.212] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"} [2026-06-17 04:51:38.219] [DEBUG] QUERY OK db=5.1ms idle=11.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "UNKNOWN", "sim_iccid", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303056, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.220] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"} [2026-06-17 04:51:38.227] [DEBUG] QUERY OK db=6.3ms idle=10.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "UNKNOWN", "sim_imsi", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303057, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.227] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"} [2026-06-17 04:51:38.234] [DEBUG] QUERY OK db=6.8ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "UNKNOWN", "sim_iccid2", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303058, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.235] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:54:50Z", "value" => "UNKNOWN"} [2026-06-17 04:51:38.240] [DEBUG] QUERY OK db=5.3ms idle=8.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "UNKNOWN", "sim_imsi2", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303059, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.241] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:54:50Z", "value" => "5"} [2026-06-17 04:51:38.248] [DEBUG] QUERY OK db=6.6ms idle=6.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "5", "data_usage_mb", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303060, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.248] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:54:50Z", "value" => "0"} [2026-06-17 04:51:38.253] [DEBUG] QUERY OK db=4.6ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "0", "mobile_data_mb", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303061, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.253] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:54:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 04:51:38.261] [DEBUG] QUERY OK db=6.9ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:54:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39006, ~N[2026-06-17 04:51:38], ~N[2026-06-17 04:51:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:51:38.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303062, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T12:54:50Z", message: nil, status_log_id: 39006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:51:38], updated_at: ~N[2026-06-17 04:51:38]}} [2026-06-17 04:51:38.263] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=9.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:51:38.267] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:51:57.458] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T12:54:50Z"} [2026-06-17 04:51:57.458] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:54:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 5, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:52:07.854] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:52:07.854] [INFO ] Incoming JSON payload: {"oid":"6e2d0fbb-5788-40f8-bfad-a6b6f675bf71","sn":"98251226730001","uploadTime":"2026-06-17T12:55:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"ram_free_mb","value":"934","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T12:55:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 04:52:07.855] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6e2d0fbb-5788-40f8-bfad-a6b6f675bf71", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:55:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:55:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:55:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:55:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:55:20Z", "value" => "934"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:55:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:55:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:55:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:55:20Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:55:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:55:20Z", "vendor" => "morefun"} [2026-06-17 04:52:07.855] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 04:52:07.855] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:52:07.856] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 04:52:07.857] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=852.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-06-17 04:52:07.858] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=219.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-06-17 04:52:07.858] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 04:52:07.859] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.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:98 [2026-06-17 04:52:07.859] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:52:07.865] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 04:52:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:52:07.865] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:52:07.866] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=6.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:627 [2026-06-17 04:52:07.871] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:52:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:52:07.878] [DEBUG] QUERY OK db=5.7ms idle=5.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6e2d0fbb-5788-40f8-bfad-a6b6f675bf71", "2026-06-17T12:55:20Z", ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:52:07.878] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39007, oid: "6e2d0fbb-5788-40f8-bfad-a6b6f675bf71", upload_time: "2026-06-17T12:55:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]} [2026-06-17 04:52:07.878] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:55:20Z", "value" => "morefun"} [2026-06-17 04:52:07.883] [DEBUG] QUERY OK db=4.4ms queue=0.1ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "morefun", "vendor", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303063, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.883] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:55:20Z", "value" => "kiosk_launcher"} [2026-06-17 04:52:07.888] [DEBUG] QUERY OK db=4.2ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "kiosk_launcher", "model", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303064, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.888] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:55:20Z", "value" => "1.0"} [2026-06-17 04:52:07.893] [DEBUG] QUERY OK db=4.4ms idle=5.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "1.0", "app_version", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303065, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.893] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:55:20Z", "value" => "13"} [2026-06-17 04:52:07.898] [DEBUG] QUERY OK db=4.4ms idle=5.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "13", "android_version", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303066, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.899] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:55:20Z", "value" => "934"} [2026-06-17 04:52:07.903] [DEBUG] QUERY OK db=4.3ms idle=5.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "934", "ram_free_mb", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303067, itemkey: "ram_free_mb", value: "934", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.903] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:55:20Z", "value" => "WIFI"} [2026-06-17 04:52:07.908] [DEBUG] QUERY OK db=4.4ms idle=5.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "WIFI", "network_type", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.908] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303068, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.909] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:55:20Z", "value" => "true"} [2026-06-17 04:52:07.915] [DEBUG] QUERY OK db=6.2ms idle=5.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "true", "kiosk_active", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303069, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.915] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:55:20Z", "value" => ""} [2026-06-17 04:52:07.920] [DEBUG] QUERY OK db=4.7ms idle=7.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:55:20Z", "sim_operator", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303070, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.921] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"} [2026-06-17 04:52:07.926] [DEBUG] QUERY OK db=4.6ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "UNKNOWN", "sim_number", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303071, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.926] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"} [2026-06-17 04:52:07.931] [DEBUG] QUERY OK db=4.8ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "UNKNOWN", "sim_iccid", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303072, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.932] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"} [2026-06-17 04:52:07.938] [DEBUG] QUERY OK db=5.4ms queue=0.1ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "UNKNOWN", "sim_imsi", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303073, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.938] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"} [2026-06-17 04:52:07.944] [DEBUG] QUERY OK db=5.4ms idle=6.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "UNKNOWN", "sim_iccid2", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303074, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.944] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:55:20Z", "value" => "UNKNOWN"} [2026-06-17 04:52:07.949] [DEBUG] QUERY OK db=4.7ms idle=6.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "UNKNOWN", "sim_imsi2", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303075, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.949] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:55:20Z", "value" => "5"} [2026-06-17 04:52:07.954] [DEBUG] QUERY OK db=4.5ms idle=5.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "5", "data_usage_mb", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303076, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.954] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:55:20Z", "value" => "0"} [2026-06-17 04:52:07.960] [DEBUG] QUERY OK db=4.4ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:20Z", "0", "mobile_data_mb", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303077, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.960] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 04:52:07.968] [DEBUG] QUERY OK db=5.7ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39007, ~N[2026-06-17 04:52:07], ~N[2026-06-17 04:52:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:07.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303078, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T12:55:20Z", message: nil, status_log_id: 39007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:07], updated_at: ~N[2026-06-17 04:52:07]}} [2026-06-17 04:52:07.970] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=9.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:52:07.974] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:52:37.962] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:52:37.962] [INFO ] Incoming JSON payload: {"oid":"1e9eef92-29e1-4f58-b98a-46d26a318a90","sn":"98251226730001","uploadTime":"2026-06-17T12:55:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"ram_free_mb","value":"931","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T12:55:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:55:51Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 04:52:37.964] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1e9eef92-29e1-4f58-b98a-46d26a318a90", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:55:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:55:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:55:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:55:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:55:51Z", "value" => "931"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:55:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:55:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:55:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:55:51Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:55:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:55:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:55:51Z", "vendor" => "morefun"} [2026-06-17 04:52:37.964] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 04:52:37.964] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:52:37.964] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 04:52:37.966] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.5ms idle=961.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-06-17 04:52:37.967] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=258.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.`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-06-17 04:52:37.967] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 04:52:37.969] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 04:52:37.969] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:52:37.981] [DEBUG] QUERY OK source="tms_terminals" db=11.3ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 04:52:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:52:37.981] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:52:37.983] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=12.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:627 [2026-06-17 04:52:37.990] [DEBUG] QUERY OK source="tms_terminals" db=6.0ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:52:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:52:37.995] [DEBUG] QUERY OK db=4.6ms idle=7.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1e9eef92-29e1-4f58-b98a-46d26a318a90", "2026-06-17T12:55:51Z", ~N[2026-06-17 04:52:37], ~N[2026-06-17 04:52:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:52:37.996] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39008, oid: "1e9eef92-29e1-4f58-b98a-46d26a318a90", upload_time: "2026-06-17T12:55:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:37], updated_at: ~N[2026-06-17 04:52:37]} [2026-06-17 04:52:37.996] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:55:51Z", "value" => "morefun"} [2026-06-17 04:52:38.003] [DEBUG] QUERY OK db=6.5ms idle=7.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "morefun", "vendor", 39008, ~N[2026-06-17 04:52:37], ~N[2026-06-17 04:52:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303079, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:37], updated_at: ~N[2026-06-17 04:52:37]}} [2026-06-17 04:52:38.004] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:55:51Z", "value" => "kiosk_launcher"} [2026-06-17 04:52:38.009] [DEBUG] QUERY OK db=4.9ms idle=8.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "kiosk_launcher", "model", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303080, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.010] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:55:51Z", "value" => "1.0"} [2026-06-17 04:52:38.015] [DEBUG] QUERY OK db=5.1ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "1.0", "app_version", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303081, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.015] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:55:51Z", "value" => "13"} [2026-06-17 04:52:38.022] [DEBUG] QUERY OK db=6.6ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "13", "android_version", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303082, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.023] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:55:51Z", "value" => "931"} [2026-06-17 04:52:38.028] [DEBUG] QUERY OK db=4.8ms queue=0.1ms idle=8.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "931", "ram_free_mb", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303083, itemkey: "ram_free_mb", value: "931", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.029] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:55:51Z", "value" => "WIFI"} [2026-06-17 04:52:38.035] [DEBUG] QUERY OK db=5.6ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "WIFI", "network_type", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303084, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.035] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:55:51Z", "value" => "true"} [2026-06-17 04:52:38.042] [DEBUG] QUERY OK db=6.2ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "true", "kiosk_active", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303085, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.042] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:55:51Z", "value" => ""} [2026-06-17 04:52:38.047] [DEBUG] QUERY OK db=4.5ms queue=0.1ms idle=8.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:55:51Z", "sim_operator", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303086, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.048] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"} [2026-06-17 04:52:38.053] [DEBUG] QUERY OK db=4.9ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "UNKNOWN", "sim_number", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303087, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.053] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"} [2026-06-17 04:52:38.060] [DEBUG] QUERY OK db=6.4ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "UNKNOWN", "sim_iccid", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303088, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.061] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"} [2026-06-17 04:52:38.067] [DEBUG] QUERY OK db=5.4ms idle=8.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "UNKNOWN", "sim_imsi", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303089, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.067] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"} [2026-06-17 04:52:38.073] [DEBUG] QUERY OK db=5.8ms queue=0.1ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "UNKNOWN", "sim_iccid2", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303090, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.074] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:55:51Z", "value" => "UNKNOWN"} [2026-06-17 04:52:38.081] [DEBUG] QUERY OK db=4.5ms idle=9.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "UNKNOWN", "sim_imsi2", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303091, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.081] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:55:51Z", "value" => "5"} [2026-06-17 04:52:38.086] [DEBUG] QUERY OK db=4.9ms idle=8.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "5", "data_usage_mb", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303092, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.087] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:55:51Z", "value" => "0"} [2026-06-17 04:52:38.093] [DEBUG] QUERY OK db=6.3ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "0", "mobile_data_mb", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303093, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.094] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:55:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 04:52:38.102] [DEBUG] QUERY OK db=5.9ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:55:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39008, ~N[2026-06-17 04:52:38], ~N[2026-06-17 04:52:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:52:38.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303094, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T12:55:51Z", message: nil, status_log_id: 39008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:52:38], updated_at: ~N[2026-06-17 04:52:38]}} [2026-06-17 04:52:38.105] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=9.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:52:38.112] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:53:08.083] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:53:08.083] [INFO ] Incoming JSON payload: {"oid":"cc164532-829e-46d8-8ca2-cd371794e1df","sn":"98251226730001","uploadTime":"2026-06-17T12:56:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T12:56:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:56:21Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 04:53:08.084] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cc164532-829e-46d8-8ca2-cd371794e1df", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:56:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:56:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:56:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:56:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:56:21Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:56:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:56:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:56:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:56:21Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:56:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:56:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:56:21Z", "vendor" => "morefun"} [2026-06-17 04:53:08.084] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 04:53:08.084] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:53:08.084] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 04:53:08.085] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=296.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-06-17 04:53:08.086] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=81.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-06-17 04:53:08.086] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 04:53:08.087] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms 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:98 [2026-06-17 04:53:08.087] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:53:08.096] [DEBUG] QUERY OK source="tms_terminals" db=8.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 04:53:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:53:08.096] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:53:08.097] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 04:53:08.102] [DEBUG] QUERY OK source="tms_terminals" db=5.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:53:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:53:08.110] [DEBUG] QUERY OK db=6.8ms idle=5.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "cc164532-829e-46d8-8ca2-cd371794e1df", "2026-06-17T12:56:21Z", ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:53:08.110] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39009, oid: "cc164532-829e-46d8-8ca2-cd371794e1df", upload_time: "2026-06-17T12:56:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]} [2026-06-17 04:53:08.110] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:56:21Z", "value" => "morefun"} [2026-06-17 04:53:08.116] [DEBUG] QUERY OK db=6.0ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "morefun", "vendor", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303095, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.117] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:56:21Z", "value" => "kiosk_launcher"} [2026-06-17 04:53:08.122] [DEBUG] QUERY OK db=5.2ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "kiosk_launcher", "model", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303096, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.122] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:56:21Z", "value" => "1.0"} [2026-06-17 04:53:08.130] [DEBUG] QUERY OK db=7.0ms idle=6.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "1.0", "app_version", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303097, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.130] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:56:21Z", "value" => "13"} [2026-06-17 04:53:08.136] [DEBUG] QUERY OK db=5.7ms queue=0.1ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "13", "android_version", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303098, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.136] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:56:21Z", "value" => "929"} [2026-06-17 04:53:08.144] [DEBUG] QUERY OK db=6.7ms queue=0.3ms idle=7.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "929", "ram_free_mb", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303099, itemkey: "ram_free_mb", value: "929", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.144] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:56:21Z", "value" => "WIFI"} [2026-06-17 04:53:08.166] [DEBUG] QUERY OK db=21.3ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "WIFI", "network_type", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303100, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.166] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:56:21Z", "value" => "true"} [2026-06-17 04:53:08.171] [DEBUG] QUERY OK db=4.8ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "true", "kiosk_active", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.171] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303101, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.172] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:56:21Z", "value" => ""} [2026-06-17 04:53:08.177] [DEBUG] QUERY OK db=5.3ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:56:21Z", "sim_operator", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303102, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.177] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"} [2026-06-17 04:53:08.185] [DEBUG] QUERY OK db=6.2ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "UNKNOWN", "sim_number", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303103, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.185] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"} [2026-06-17 04:53:08.190] [DEBUG] QUERY OK db=4.7ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "UNKNOWN", "sim_iccid", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303104, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.190] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"} [2026-06-17 04:53:08.196] [DEBUG] QUERY OK db=4.8ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "UNKNOWN", "sim_imsi", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303105, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.196] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"} [2026-06-17 04:53:08.203] [DEBUG] QUERY OK db=6.1ms idle=5.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "UNKNOWN", "sim_iccid2", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303106, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.203] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:56:21Z", "value" => "UNKNOWN"} [2026-06-17 04:53:08.208] [DEBUG] QUERY OK db=4.7ms idle=8.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "UNKNOWN", "sim_imsi2", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303107, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.209] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:56:21Z", "value" => "5"} [2026-06-17 04:53:08.215] [DEBUG] QUERY OK db=5.5ms idle=7.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "5", "data_usage_mb", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303108, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.215] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:56:21Z", "value" => "0"} [2026-06-17 04:53:08.222] [DEBUG] QUERY OK db=5.8ms idle=7.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "0", "mobile_data_mb", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303109, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.223] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:56:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 04:53:08.229] [DEBUG] QUERY OK db=5.1ms queue=0.1ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39009, ~N[2026-06-17 04:53:08], ~N[2026-06-17 04:53:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:08.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303110, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T12:56:21Z", message: nil, status_log_id: 39009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:08], updated_at: ~N[2026-06-17 04:53:08]}} [2026-06-17 04:53:08.232] [DEBUG] QUERY OK source="tms_terminals" db=1.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:53:08.236] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:53:25.732] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:53:25.732] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T12:56:39Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T12:56:39Z","value":"60"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T12:56:39Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T12:56:39Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T12:56:39Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T12:56:39Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T12:56:39Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T12:56:39Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-06-17T12:56:39Z","vendor":"MoreFun"} [2026-06-17 04:53:25.732] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:56:39Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:56:39Z", "value" => "60"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:56:39Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:56:39Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:56:39Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:56:39Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:56:39Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:56:39Z", "value" => ""}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:56:39Z", "vendor" => "MoreFun"} [2026-06-17 04:53:25.732] [INFO ] Extracted versions for 98251226730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 04:53:25.732] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:53:25.732] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-06-17 04:53:25.733] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=902.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-06-17 04:53:25.734] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=726.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-06-17 04:53:25.735] [DEBUG] QUERY OK source="parameter_template_values" db=0.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-06-17 04:53:25.737] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.3ms idle=1.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-06-17 04:53:25.737] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=1.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:153 [2026-06-17 04:53:25.777] [DEBUG] QUERY OK source="pos_merchant" db=39.9ms idle=0.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [123] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 04:53:25.781] [DEBUG] QUERY OK db=0.5ms queue=2.5ms idle=1770.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 ["390888230000000"] [2026-06-17 04:53:25.781] [INFO ] ParamsZipBuilder: Merchant info for merchantid=390888230000000 - business_name=nn, QR_USE_SSL=1, softpos_uuid= [2026-06-17 04:53:25.782] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=43.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 ["88823510"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 04:53:25.782] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=88823510, using defaults [2026-06-17 04:53:25.782] [DEBUG] QUERY OK source="address" db=0.4ms idle=4.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` = ?) [326] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 04:53:25.782] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="390888230000000" [2026-06-17 04:53:25.783] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-06-17 04:53:25.794] [DEBUG] QUERY OK db=9.7ms idle=2.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c596c6502c76b871d633fdfd4fc046c88fb2d2276f375b5e50db6036b25f6d27", 996, 931, ~U[2026-06-17 04:53:25Z], "priv/ota/98251226730001/params.zip", 33, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 04:53:25.794] [INFO ] AutoPushService: Created push log 29571 for MF919 params.zip [2026-06-17 04:53:25.794] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 996, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 04:53:25.794] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:53:25.794] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-06-17 04:53:25.795] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=12.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-06-17 04:53:25.798] [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-06-17 04:53:25.804] [DEBUG] QUERY OK db=5.4ms idle=5.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "7f51a51346dc6dbe1d2ae6af18123a2cef2ca488d7d7e76c14864a20634628dc", 1092, 17947, ~U[2026-06-17 04:53:25Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 04:53:25.804] [INFO ] AutoPushService: Created push log 29572 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 04:53:25.805] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1092, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 04:53:25.805] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:53:25.805] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-06-17 04:53:25.807] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-06-17 04:53:25.807] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-06-17 04:53:25.808] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 04:53:25.808] [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-06-17 04:53:25.811] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 04:53:25.811] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:53:25.811] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:53:25.813] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=5.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-06-17 04:53:25.813] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 04:53:25.813] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-06-17 04:53:25.814] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 04:53:25.860] [DEBUG] QUERY OK source="tms_terminals" db=4.7ms queue=41.0ms idle=1.4ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-06-17 04:53:25], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 04:53:25.860] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:53:25.861] [INFO ] Event published: terminal_updated [2026-06-17 04:53:25.861] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 04:53:25.861] [INFO ] Processing terminal_updated event for terminal 33 [2026-06-17 04:53:25.861] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 04:53:25.861] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.3ms idle=28.8ms 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-06-17 04:53:25], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 04:53:25.863] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.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-06-17 04:53:25.864] [DEBUG] QUERY OK source="terminal_group_rules" db=1.0ms 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-06-17 04:53:25.864] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-06-17 04:53:25.908] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms queue=40.5ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "1.0.1", "1.0.0", ~N[2026-06-17 04:53:25], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:53:25.910] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.5ms idle=44.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-06-17 04:53:25.911] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms 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-06-17 04:53:25.911] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:53:25.913] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 04:53:25.959] [DEBUG] QUERY OK source="tms_terminals" db=5.6ms queue=40.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:53:25], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:53:25.964] [DEBUG] QUERY OK db=4.8ms idle=46.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-06-17T12:56:39Z", ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:53:25.965] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39010, oid: "organization_id", upload_time: "2026-06-17T12:56:39Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:25], updated_at: ~N[2026-06-17 04:53:25]} [2026-06-17 04:53:25.965] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:56:39Z", "value" => "online"} [2026-06-17 04:53:25.971] [DEBUG] QUERY OK db=5.6ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T12:56:39Z", "online", "status", 39010, ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:25.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303111, itemkey: "status", value: "online", timestamp: "2026-06-17T12:56:39Z", message: "Terminal status update", status_log_id: 39010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:25], updated_at: ~N[2026-06-17 04:53:25]}} [2026-06-17 04:53:25.971] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-06-17 04:53:25.972] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:56:39Z", "value" => "60"} [2026-06-17 04:53:25.972] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:53:25.979] [DEBUG] QUERY OK db=6.6ms idle=7.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T12:56:39Z", "60", "battery", 39010, ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:25.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303112, itemkey: "battery", value: "60", timestamp: "2026-06-17T12:56:39Z", message: "Battery level", status_log_id: 39010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:25], updated_at: ~N[2026-06-17 04:53:25]}} [2026-06-17 04:53:25.979] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:56:39Z", "value" => "online"} [2026-06-17 04:53:25.985] [DEBUG] QUERY OK db=5.7ms idle=8.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T12:56:39Z", "online", "network", 39010, ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:25.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303113, itemkey: "network", value: "online", timestamp: "2026-06-17T12:56:39Z", message: "Network connectivity", status_log_id: 39010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:25], updated_at: ~N[2026-06-17 04:53:25]}} [2026-06-17 04:53:25.986] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-06-17 04:53:25.986] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:53:25.986] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:56:39Z", "value" => "0"} [2026-06-17 04:53:25.992] [DEBUG] QUERY OK db=5.5ms idle=8.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T12:56:39Z", "0", "cpu", 39010, ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:25.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303114, itemkey: "cpu", value: "0", timestamp: "2026-06-17T12:56:39Z", message: "CPU usage percentage", status_log_id: 39010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:25], updated_at: ~N[2026-06-17 04:53:25]}} [2026-06-17 04:53:25.992] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:56:39Z", "value" => "1.0.0"} [2026-06-17 04:53:25.999] [DEBUG] QUERY OK db=6.1ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T12:56:39Z", "1.0.0", "parameter_config", 39010, ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:25.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303115, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T12:56:39Z", message: "Current parameters version", status_log_id: 39010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:25], updated_at: ~N[2026-06-17 04:53:25]}} [2026-06-17 04:53:25.999] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:56:39Z", "value" => "1.0.1"} [2026-06-17 04:53:26.005] [DEBUG] QUERY OK db=5.4ms idle=7.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T12:56:39Z", "1.0.1", "emv_config", 39010, ~N[2026-06-17 04:53:25], ~N[2026-06-17 04:53:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:26.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303116, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T12:56:39Z", message: "Current EMV config version", status_log_id: 39010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:25], updated_at: ~N[2026-06-17 04:53:25]}} [2026-06-17 04:53:26.005] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:56:39Z", "value" => ""} [2026-06-17 04:53:26.051] [DEBUG] QUERY OK db=4.8ms queue=40.8ms idle=6.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T12:56:39Z", "keys_config", 39010, ~N[2026-06-17 04:53:26], ~N[2026-06-17 04:53:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:26.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303117, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T12:56:39Z", message: "Current keys config version", status_log_id: 39010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:26], updated_at: ~N[2026-06-17 04:53:26]}} [2026-06-17 04:53:26.052] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:56:39Z", "value" => ""} [2026-06-17 04:53:26.099] [DEBUG] QUERY OK db=4.6ms queue=41.9ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T12:56:39Z", "application", 39010, ~N[2026-06-17 04:53:26], ~N[2026-06-17 04:53:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:26.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303118, itemkey: "application", value: nil, timestamp: "2026-06-17T12:56:39Z", message: "Current application version", status_log_id: 39010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:26], updated_at: ~N[2026-06-17 04:53:26]}} [2026-06-17 04:53:26.100] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T12:56:39Z"} [2026-06-17 04:53:26.101] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=49.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:53:26.101] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:56:39Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 11, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:53:26.106] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:53:26.189] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T12:56:39Z"} [2026-06-17 04:53:26.189] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:56:39Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 12, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:53:38.607] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:53:38.607] [INFO ] Incoming JSON payload: {"oid":"6f03d501-cd8d-480c-982e-26ee7957f31b","sn":"98251226730001","uploadTime":"2026-06-17T12:56:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"ram_free_mb","value":"926","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T12:56:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:56:51Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 04:53:38.608] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6f03d501-cd8d-480c-982e-26ee7957f31b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:56:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:56:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:56:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:56:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:56:51Z", "value" => "926"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:56:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:56:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:56:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:56:51Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:56:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:56:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:56:51Z", "vendor" => "morefun"} [2026-06-17 04:53:38.609] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 04:53:38.609] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:53:38.609] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 04:53:38.610] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=741.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-06-17 04:53:38.610] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=602.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-06-17 04:53:38.610] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 04:53:38.611] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 04:53:38.617] [DEBUG] QUERY OK source="tms_terminals" db=6.0ms idle=0.9ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["morefun", "kiosk_launcher", ~N[2026-06-17 04:53:38], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 04:53:38.617] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:53:38.618] [INFO ] Event published: terminal_updated [2026-06-17 04:53:38.618] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 04:53:38.618] [INFO ] Processing terminal_updated event for terminal 33 [2026-06-17 04:53:38.618] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 04:53:38.618] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=6.8ms 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-06-17 04:53:38], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 04:53:38.620] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms 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 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 04:53:38.620] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=0.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_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-06-17 04:53:38.620] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-06-17 04:53:38.667] [DEBUG] QUERY OK source="tms_terminals" db=5.8ms queue=42.3ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "morefun", "kiosk_launcher", nil, nil, ~N[2026-06-17 04:53:38], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:53:38.668] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:53:38.669] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=47.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:627 [2026-06-17 04:53:38.715] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms queue=41.4ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:53:38], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:53:38.720] [DEBUG] QUERY OK db=4.5ms idle=46.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6f03d501-cd8d-480c-982e-26ee7957f31b", "2026-06-17T12:56:51Z", ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:53:38.720] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39011, oid: "6f03d501-cd8d-480c-982e-26ee7957f31b", upload_time: "2026-06-17T12:56:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]} [2026-06-17 04:53:38.721] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:56:51Z", "value" => "morefun"} [2026-06-17 04:53:38.769] [DEBUG] QUERY OK db=7.3ms queue=40.5ms idle=5.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "morefun", "vendor", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303119, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.769] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:56:51Z", "value" => "kiosk_launcher"} [2026-06-17 04:53:38.817] [DEBUG] QUERY OK db=5.1ms queue=40.7ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "kiosk_launcher", "model", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303120, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.817] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:56:51Z", "value" => "1.0"} [2026-06-17 04:53:38.824] [DEBUG] QUERY OK db=5.1ms queue=0.7ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "1.0", "app_version", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303121, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.824] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:56:51Z", "value" => "13"} [2026-06-17 04:53:38.831] [DEBUG] QUERY OK db=6.3ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "13", "android_version", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303122, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.831] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:56:51Z", "value" => "926"} [2026-06-17 04:53:38.837] [DEBUG] QUERY OK db=5.3ms idle=7.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "926", "ram_free_mb", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303123, itemkey: "ram_free_mb", value: "926", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.837] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:56:51Z", "value" => "WIFI"} [2026-06-17 04:53:38.844] [DEBUG] QUERY OK db=6.2ms idle=6.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "WIFI", "network_type", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303124, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.844] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:56:51Z", "value" => "true"} [2026-06-17 04:53:38.852] [DEBUG] QUERY OK db=7.6ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "true", "kiosk_active", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303125, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.853] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:56:51Z", "value" => ""} [2026-06-17 04:53:38.859] [DEBUG] QUERY OK db=5.7ms idle=8.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:56:51Z", "sim_operator", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303126, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.859] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"} [2026-06-17 04:53:38.865] [DEBUG] QUERY OK db=5.6ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "UNKNOWN", "sim_number", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303127, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.866] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"} [2026-06-17 04:53:38.872] [DEBUG] QUERY OK db=5.7ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "UNKNOWN", "sim_iccid", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303128, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.873] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"} [2026-06-17 04:53:38.879] [DEBUG] QUERY OK db=5.0ms queue=0.1ms idle=3.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "UNKNOWN", "sim_imsi", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303129, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.879] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"} [2026-06-17 04:53:38.885] [DEBUG] QUERY OK db=5.3ms idle=7.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "UNKNOWN", "sim_iccid2", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303130, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.885] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:56:51Z", "value" => "UNKNOWN"} [2026-06-17 04:53:38.891] [DEBUG] QUERY OK db=4.6ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "UNKNOWN", "sim_imsi2", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303131, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.892] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:56:51Z", "value" => "5"} [2026-06-17 04:53:38.897] [DEBUG] QUERY OK db=4.5ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "5", "data_usage_mb", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303132, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.897] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:56:51Z", "value" => "0"} [2026-06-17 04:53:38.902] [DEBUG] QUERY OK db=4.6ms idle=5.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "0", "mobile_data_mb", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303133, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.903] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:56:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 04:53:38.910] [DEBUG] QUERY OK db=5.7ms idle=7.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:56:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39011, ~N[2026-06-17 04:53:38], ~N[2026-06-17 04:53:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:38.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303134, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T12:56:51Z", message: nil, status_log_id: 39011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:38], updated_at: ~N[2026-06-17 04:53:38]}} [2026-06-17 04:53:38.912] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=9.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:53:38.916] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:53:47.073] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:53:47.074] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T12:57:00Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T12:57:00Z","value":"60"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T12:57:00Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T12:57:00Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T12:57:00Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T12:57:00Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T12:57:00Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T12:57:00Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-06-17T12:57:00Z","vendor":"MoreFun"} [2026-06-17 04:53:47.074] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:57:00Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:57:00Z", "value" => "60"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:57:00Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:57:00Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:57:00Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:57:00Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:57:00Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:57:00Z", "value" => ""}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:57:00Z", "vendor" => "MoreFun"} [2026-06-17 04:53:47.074] [INFO ] Extracted versions for 98251226730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 04:53:47.075] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:53:47.075] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-06-17 04:53:47.076] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=186.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-06-17 04:53:47.077] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=69.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-06-17 04:53:47.078] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms 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-06-17 04:53:47.081] [DEBUG] QUERY OK source="parameter_definitions" db=1.4ms queue=0.5ms idle=1.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-06-17 04:53:47.082] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=2.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:153 [2026-06-17 04:53:47.121] [DEBUG] QUERY OK source="pos_merchant" db=39.2ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [123] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 04:53:47.123] [DEBUG] QUERY OK db=0.8ms queue=0.5ms idle=1114.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 ["390888230000000"] [2026-06-17 04:53:47.123] [INFO ] ParamsZipBuilder: Merchant info for merchantid=390888230000000 - business_name=nn, QR_USE_SSL=1, softpos_uuid= [2026-06-17 04:53:47.124] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.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 ["88823510"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 04:53:47.124] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=88823510, using defaults [2026-06-17 04:53:47.125] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.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` = ?) [326] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 04:53:47.125] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="390888230000000" [2026-06-17 04:53:47.126] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-06-17 04:53:47.135] [DEBUG] QUERY OK db=7.4ms idle=2.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "12507a6cf3f938e1e11a68d8d3840a6464cf01823c7cb42893a505f637a4c48c", 4450, 931, ~U[2026-06-17 04:53:47Z], "priv/ota/98251226730001/params.zip", 33, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 04:53:47.135] [INFO ] AutoPushService: Created push log 29573 for MF919 params.zip [2026-06-17 04:53:47.135] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 4450, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 04:53:47.135] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:53:47.135] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-06-17 04:53:47.136] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 04:53:47.142] [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-06-17 04:53:47.153] [DEBUG] QUERY OK db=8.9ms idle=10.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "29adfde505249ba66edd270f9b9f796b93e7b9d76e2941c5aee167be191b0afc", 1699, 17947, ~U[2026-06-17 04:53:47Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 04:53:47.154] [INFO ] AutoPushService: Created push log 29574 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 04:53:47.154] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1699, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 04:53:47.154] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:53:47.154] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-06-17 04:53:47.156] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=18.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-06-17 04:53:47.156] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-06-17 04:53:47.158] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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-06-17 04:53:47.158] [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-06-17 04:53:47.161] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 04:53:47.161] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:53:47.161] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:53:47.162] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=5.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-06-17 04:53:47.163] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 04:53:47.163] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-06-17 04:53:47.164] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=5.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:98 [2026-06-17 04:53:47.211] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms queue=41.2ms idle=1.7ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-06-17 04:53:47], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 04:53:47.211] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:53:47.212] [INFO ] Event published: terminal_updated [2026-06-17 04:53:47.212] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 04:53:47.212] [INFO ] Processing terminal_updated event for terminal 33 [2026-06-17 04:53:47.213] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 04:53:47.214] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=0.3ms idle=48.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-06-17 04:53:47], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 04:53:47.215] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 04:53:47.216] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.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-06-17 04:53:47.216] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-06-17 04:53:47.263] [DEBUG] QUERY OK source="tms_terminals" db=7.7ms queue=41.4ms idle=0.7ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "1.0.1", "1.0.0", ~N[2026-06-17 04:53:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:53:47.264] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=48.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-06-17 04:53:47.266] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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-06-17 04:53:47.266] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:53:47.267] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 04:53:47.314] [DEBUG] QUERY OK source="tms_terminals" db=5.1ms queue=41.3ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:53:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:53:47.319] [DEBUG] QUERY OK db=5.1ms idle=47.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-06-17T12:57:00Z", ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:53:47.319] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39012, oid: "organization_id", upload_time: "2026-06-17T12:57:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]} [2026-06-17 04:53:47.320] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:57:00Z", "value" => "online"} [2026-06-17 04:53:47.326] [DEBUG] QUERY OK db=6.5ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T12:57:00Z", "online", "status", 39012, ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:47.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303135, itemkey: "status", value: "online", timestamp: "2026-06-17T12:57:00Z", message: "Terminal status update", status_log_id: 39012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]}} [2026-06-17 04:53:47.327] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-06-17 04:53:47.327] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:57:00Z", "value" => "60"} [2026-06-17 04:53:47.327] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:53:47.333] [DEBUG] QUERY OK db=5.3ms idle=7.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T12:57:00Z", "60", "battery", 39012, ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:47.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303136, itemkey: "battery", value: "60", timestamp: "2026-06-17T12:57:00Z", message: "Battery level", status_log_id: 39012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]}} [2026-06-17 04:53:47.333] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:57:00Z", "value" => "online"} [2026-06-17 04:53:47.338] [DEBUG] QUERY OK db=4.6ms idle=7.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T12:57:00Z", "online", "network", 39012, ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:47.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303137, itemkey: "network", value: "online", timestamp: "2026-06-17T12:57:00Z", message: "Network connectivity", status_log_id: 39012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]}} [2026-06-17 04:53:47.338] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-06-17 04:53:47.338] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:57:00Z", "value" => "0"} [2026-06-17 04:53:47.339] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:53:47.343] [DEBUG] QUERY OK db=4.7ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T12:57:00Z", "0", "cpu", 39012, ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:47.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303138, itemkey: "cpu", value: "0", timestamp: "2026-06-17T12:57:00Z", message: "CPU usage percentage", status_log_id: 39012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]}} [2026-06-17 04:53:47.344] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:57:00Z", "value" => "1.0.0"} [2026-06-17 04:53:47.350] [DEBUG] QUERY OK db=5.8ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T12:57:00Z", "1.0.0", "parameter_config", 39012, ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:47.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303139, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T12:57:00Z", message: "Current parameters version", status_log_id: 39012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]}} [2026-06-17 04:53:47.350] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:57:00Z", "value" => "1.0.1"} [2026-06-17 04:53:47.356] [DEBUG] QUERY OK db=5.4ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T12:57:00Z", "1.0.1", "emv_config", 39012, ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:47.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303140, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T12:57:00Z", message: "Current EMV config version", status_log_id: 39012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]}} [2026-06-17 04:53:47.356] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:57:00Z", "value" => ""} [2026-06-17 04:53:47.403] [DEBUG] QUERY OK db=5.1ms queue=41.3ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T12:57:00Z", "keys_config", 39012, ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:47.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303141, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T12:57:00Z", message: "Current keys config version", status_log_id: 39012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]}} [2026-06-17 04:53:47.404] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:57:00Z", "value" => ""} [2026-06-17 04:53:47.450] [DEBUG] QUERY OK db=4.9ms queue=41.2ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T12:57:00Z", "application", 39012, ~N[2026-06-17 04:53:47], ~N[2026-06-17 04:53:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:53:47.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303142, itemkey: "application", value: nil, timestamp: "2026-06-17T12:57:00Z", message: "Current application version", status_log_id: 39012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:53:47], updated_at: ~N[2026-06-17 04:53:47]}} [2026-06-17 04:53:47.451] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T12:57:00Z"} [2026-06-17 04:53:47.452] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=47.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:53:47.451] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:57:00Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 15, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:53:47.457] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:53:47.482] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T12:57:00Z"} [2026-06-17 04:53:47.483] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:57:00Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 16, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:54:08.572] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:54:08.572] [INFO ] Incoming JSON payload: {"oid":"cacc68b2-6574-4da3-9dec-786334fcda42","sn":"98251226730001","uploadTime":"2026-06-17T12:57:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"ram_free_mb","value":"903","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T12:57:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:57:21Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 04:54:08.574] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cacc68b2-6574-4da3-9dec-786334fcda42", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:57:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:57:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:57:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:57:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:57:21Z", "value" => "903"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:57:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:57:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:57:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:57:21Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:57:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:57:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:57:21Z", "vendor" => "morefun"} [2026-06-17 04:54:08.574] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 04:54:08.575] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:54:08.575] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 04:54:08.575] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=623.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 04:54:08.579] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=567.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-06-17 04:54:08.579] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 04:54:08.583] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=3.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:98 [2026-06-17 04:54:08.592] [DEBUG] QUERY OK source="tms_terminals" db=9.1ms idle=3.8ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["morefun", "kiosk_launcher", ~N[2026-06-17 04:54:08], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 04:54:08.592] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:54:08.595] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 04:54:08.597] [INFO ] Processing terminal_updated event for terminal 33 [2026-06-17 04:54:08.597] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 04:54:08.594] [INFO ] Event published: terminal_updated [2026-06-17 04:54:08.598] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=0.5ms idle=14.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-06-17 04:54:08], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 04:54:08.603] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms queue=0.1ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 04:54:08.606] [DEBUG] QUERY OK source="terminal_group_rules" db=3.3ms 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-06-17 04:54:08.608] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-06-17 04:54:08.645] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms queue=40.5ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "morefun", "kiosk_launcher", nil, nil, ~N[2026-06-17 04:54:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:54:08.645] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:54:08.647] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=39.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:627 [2026-06-17 04:54:08.694] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms queue=40.9ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:54:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:54:08.700] [DEBUG] QUERY OK db=5.6ms idle=47.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "cacc68b2-6574-4da3-9dec-786334fcda42", "2026-06-17T12:57:21Z", ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:54:08.700] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39013, oid: "cacc68b2-6574-4da3-9dec-786334fcda42", upload_time: "2026-06-17T12:57:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]} [2026-06-17 04:54:08.700] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:57:21Z", "value" => "morefun"} [2026-06-17 04:54:08.746] [DEBUG] QUERY OK db=5.0ms queue=40.9ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "morefun", "vendor", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303143, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.747] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:57:21Z", "value" => "kiosk_launcher"} [2026-06-17 04:54:08.794] [DEBUG] QUERY OK db=4.7ms queue=42.2ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "kiosk_launcher", "model", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303144, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.795] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:57:21Z", "value" => "1.0"} [2026-06-17 04:54:08.801] [DEBUG] QUERY OK db=5.7ms queue=0.4ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "1.0", "app_version", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303145, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.802] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:57:21Z", "value" => "13"} [2026-06-17 04:54:08.809] [DEBUG] QUERY OK db=6.6ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "13", "android_version", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303146, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.809] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:57:21Z", "value" => "903"} [2026-06-17 04:54:08.815] [DEBUG] QUERY OK db=5.5ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "903", "ram_free_mb", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303147, itemkey: "ram_free_mb", value: "903", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.815] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:57:21Z", "value" => "WIFI"} [2026-06-17 04:54:08.822] [DEBUG] QUERY OK db=6.1ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "WIFI", "network_type", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303148, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.822] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:57:21Z", "value" => "true"} [2026-06-17 04:54:08.827] [DEBUG] QUERY OK db=5.0ms idle=7.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "true", "kiosk_active", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303149, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.828] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:57:21Z", "value" => ""} [2026-06-17 04:54:08.835] [DEBUG] QUERY OK db=5.8ms queue=0.5ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:57:21Z", "sim_operator", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303150, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.835] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"} [2026-06-17 04:54:08.841] [DEBUG] QUERY OK db=5.5ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "UNKNOWN", "sim_number", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303151, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.841] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"} [2026-06-17 04:54:08.848] [DEBUG] QUERY OK db=6.6ms idle=7.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "UNKNOWN", "sim_iccid", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303152, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.849] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"} [2026-06-17 04:54:08.854] [DEBUG] QUERY OK db=4.8ms idle=7.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "UNKNOWN", "sim_imsi", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303153, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.854] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"} [2026-06-17 04:54:08.859] [DEBUG] QUERY OK db=4.9ms idle=5.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "UNKNOWN", "sim_iccid2", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303154, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.860] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:57:21Z", "value" => "UNKNOWN"} [2026-06-17 04:54:08.865] [DEBUG] QUERY OK db=5.5ms idle=6.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "UNKNOWN", "sim_imsi2", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303155, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.866] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:57:21Z", "value" => "5"} [2026-06-17 04:54:08.872] [DEBUG] QUERY OK db=6.4ms queue=0.1ms idle=6.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "5", "data_usage_mb", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303156, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.873] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:57:21Z", "value" => "0"} [2026-06-17 04:54:08.878] [DEBUG] QUERY OK db=4.5ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "0", "mobile_data_mb", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303157, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.879] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:57:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 04:54:08.886] [DEBUG] QUERY OK db=6.0ms idle=6.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:57:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39013, ~N[2026-06-17 04:54:08], ~N[2026-06-17 04:54:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:08.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303158, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T12:57:21Z", message: nil, status_log_id: 39013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:08], updated_at: ~N[2026-06-17 04:54:08]}} [2026-06-17 04:54:08.888] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=9.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:54:08.891] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:54:10.079] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:54:10.079] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T12:57:23Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T12:57:23Z","value":"60"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T12:57:23Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T12:57:23Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T12:57:23Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T12:57:23Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T12:57:23Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T12:57:23Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-06-17T12:57:23Z","vendor":"MoreFun"} [2026-06-17 04:54:10.080] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:57:23Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:57:23Z", "value" => "60"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:57:23Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:57:23Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:57:23Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:57:23Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:57:23Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:57:23Z", "value" => ""}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:57:23Z", "vendor" => "MoreFun"} [2026-06-17 04:54:10.080] [INFO ] Extracted versions for 98251226730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 04:54:10.080] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:54:10.080] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-06-17 04:54:10.082] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=124.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-06-17 04:54:10.083] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=74.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-06-17 04:54:10.084] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms 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-06-17 04:54:10.086] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=1.0ms 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-06-17 04:54:10.087] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=3.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:153 [2026-06-17 04:54:10.129] [DEBUG] QUERY OK source="pos_merchant" db=40.9ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [123] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 04:54:10.131] [DEBUG] QUERY OK db=1.0ms queue=1.6ms idle=1120.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 ["390888230000000"] [2026-06-17 04:54:10.132] [INFO ] ParamsZipBuilder: Merchant info for merchantid=390888230000000 - business_name=nn, QR_USE_SSL=1, softpos_uuid= [2026-06-17 04:54:10.135] [DEBUG] QUERY OK source="pos_terminal_data" db=2.5ms idle=44.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 ["88823510"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 04:54:10.135] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=88823510, using defaults [2026-06-17 04:54:10.140] [DEBUG] QUERY OK source="address" db=0.8ms idle=10.3ms 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` = ?) [326] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 04:54:10.140] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="390888230000000" [2026-06-17 04:54:10.142] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-06-17 04:54:10.151] [DEBUG] QUERY OK db=8.6ms idle=7.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e2a46737ff7bf6641d231900490994150e4ad01ef414c4983915986e69c38a8f", 4546, 931, ~U[2026-06-17 04:54:10Z], "priv/ota/98251226730001/params.zip", 33, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 04:54:10.151] [INFO ] AutoPushService: Created push log 29575 for MF919 params.zip [2026-06-17 04:54:10.153] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 4546, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 04:54:10.153] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:54:10.153] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-06-17 04:54:10.156] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=13.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-06-17 04:54:10.164] [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-06-17 04:54:10.170] [DEBUG] QUERY OK db=5.1ms queue=0.2ms idle=14.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c81781ee67f82638b113921c3e3784beff05918b170bf61271ff6f72f03db022", 1380, 17947, ~U[2026-06-17 04:54:10Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 04:54:10.171] [INFO ] AutoPushService: Created push log 29576 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 04:54:10.171] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1380, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 04:54:10.171] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:54:10.172] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-06-17 04:54:10.173] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=16.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-06-17 04:54:10.174] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-06-17 04:54:10.175] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 04:54:10.175] [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-06-17 04:54:10.178] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 04:54:10.178] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:54:10.178] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:54:10.181] [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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 04:54:10.181] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 04:54:10.181] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-06-17 04:54:10.182] [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:98 [2026-06-17 04:54:10.188] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms queue=0.3ms idle=1.9ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-06-17 04:54:10], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 04:54:10.189] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:54:10.189] [INFO ] Event published: terminal_updated [2026-06-17 04:54:10.189] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 04:54:10.189] [INFO ] Processing terminal_updated event for terminal 33 [2026-06-17 04:54:10.189] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=6.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-06-17 04:54:10], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 04:54:10.189] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 04:54:10.191] [DEBUG] QUERY OK source="tms_terminals" db=1.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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 04:54:10.192] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.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_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-06-17 04:54:10.192] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-06-17 04:54:10.237] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms queue=40.8ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "1.0.1", "1.0.0", ~N[2026-06-17 04:54:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:54:10.238] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=45.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-06-17 04:54:10.239] [DEBUG] QUERY OK source="config_file_versions" db=0.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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 04:54:10.239] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:54:10.240] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.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:627 [2026-06-17 04:54:10.287] [DEBUG] QUERY OK source="tms_terminals" db=7.0ms queue=40.5ms idle=0.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:54:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:54:10.297] [DEBUG] QUERY OK db=9.4ms idle=48.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-06-17T12:57:23Z", ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:54:10.298] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39014, oid: "organization_id", upload_time: "2026-06-17T12:57:23Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]} [2026-06-17 04:54:10.298] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:57:23Z", "value" => "online"} [2026-06-17 04:54:10.305] [DEBUG] QUERY OK db=5.9ms queue=0.2ms idle=11.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T12:57:23Z", "online", "status", 39014, ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:10.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303159, itemkey: "status", value: "online", timestamp: "2026-06-17T12:57:23Z", message: "Terminal status update", status_log_id: 39014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]}} [2026-06-17 04:54:10.305] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-06-17 04:54:10.306] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:57:23Z", "value" => "60"} [2026-06-17 04:54:10.307] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:54:10.312] [DEBUG] QUERY OK db=5.5ms idle=9.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T12:57:23Z", "60", "battery", 39014, ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:10.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303160, itemkey: "battery", value: "60", timestamp: "2026-06-17T12:57:23Z", message: "Battery level", status_log_id: 39014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]}} [2026-06-17 04:54:10.312] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:57:23Z", "value" => "online"} [2026-06-17 04:54:10.320] [DEBUG] QUERY OK db=4.6ms queue=0.1ms idle=10.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T12:57:23Z", "online", "network", 39014, ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:10.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303161, itemkey: "network", value: "online", timestamp: "2026-06-17T12:57:23Z", message: "Network connectivity", status_log_id: 39014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]}} [2026-06-17 04:54:10.320] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-06-17 04:54:10.320] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:57:23Z", "value" => "0"} [2026-06-17 04:54:10.321] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:54:10.325] [DEBUG] QUERY OK db=4.5ms idle=8.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T12:57:23Z", "0", "cpu", 39014, ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:10.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303162, itemkey: "cpu", value: "0", timestamp: "2026-06-17T12:57:23Z", message: "CPU usage percentage", status_log_id: 39014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]}} [2026-06-17 04:54:10.326] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:57:23Z", "value" => "1.0.0"} [2026-06-17 04:54:10.331] [DEBUG] QUERY OK db=4.8ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T12:57:23Z", "1.0.0", "parameter_config", 39014, ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:10.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303163, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T12:57:23Z", message: "Current parameters version", status_log_id: 39014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]}} [2026-06-17 04:54:10.332] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:57:23Z", "value" => "1.0.1"} [2026-06-17 04:54:10.336] [DEBUG] QUERY OK db=4.5ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T12:57:23Z", "1.0.1", "emv_config", 39014, ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:10.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303164, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T12:57:23Z", message: "Current EMV config version", status_log_id: 39014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]}} [2026-06-17 04:54:10.337] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:57:23Z", "value" => ""} [2026-06-17 04:54:10.383] [DEBUG] QUERY OK db=4.5ms queue=41.3ms idle=5.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T12:57:23Z", "keys_config", 39014, ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:10.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303165, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T12:57:23Z", message: "Current keys config version", status_log_id: 39014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]}} [2026-06-17 04:54:10.383] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:57:23Z", "value" => ""} [2026-06-17 04:54:10.429] [DEBUG] QUERY OK db=4.5ms queue=40.7ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T12:57:23Z", "application", 39014, ~N[2026-06-17 04:54:10], ~N[2026-06-17 04:54:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:10.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303166, itemkey: "application", value: nil, timestamp: "2026-06-17T12:57:23Z", message: "Current application version", status_log_id: 39014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:10], updated_at: ~N[2026-06-17 04:54:10]}} [2026-06-17 04:54:10.429] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T12:57:23Z"} [2026-06-17 04:54:10.431] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=47.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:54:10.430] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:57:23Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 19, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:54:10.438] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:54:10.492] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T12:57:23Z"} [2026-06-17 04:54:10.492] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:57:23Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 20, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:54:20.151] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 04:54:20.151] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T12:57:33Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T12:57:33Z","value":"60"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T12:57:33Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T12:57:33Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T12:57:33Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T12:57:33Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T12:57:33Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T12:57:33Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-06-17T12:57:33Z","vendor":"MoreFun"} [2026-06-17 04:54:20.152] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:57:33Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:57:33Z", "value" => "60"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:57:33Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:57:33Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:57:33Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:57:33Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:57:33Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:57:33Z", "value" => ""}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T12:57:33Z", "vendor" => "MoreFun"} [2026-06-17 04:54:20.152] [INFO ] Extracted versions for 98251226730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 04:54:20.152] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 04:54:20.152] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-06-17 04:54:20.155] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=1144.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-06-17 04:54:20.156] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=174.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-06-17 04:54:20.159] [DEBUG] QUERY OK source="parameter_template_values" db=2.8ms 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-06-17 04:54:20.163] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=1.7ms idle=3.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-06-17 04:54:20.165] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms queue=0.1ms idle=4.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:153 [2026-06-17 04:54:20.206] [DEBUG] QUERY OK source="pos_merchant" db=40.6ms queue=0.1ms idle=2.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [123] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 04:54:20.208] [DEBUG] QUERY OK db=0.7ms queue=1.0ms idle=1198.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 ["390888230000000"] [2026-06-17 04:54:20.208] [INFO ] ParamsZipBuilder: Merchant info for merchantid=390888230000000 - business_name=nn, QR_USE_SSL=1, softpos_uuid= [2026-06-17 04:54:20.210] [DEBUG] QUERY OK source="pos_terminal_data" db=1.8ms idle=43.3ms 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 ["88823510"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 04:54:20.210] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=88823510, using defaults [2026-06-17 04:54:20.213] [DEBUG] QUERY OK source="address" db=2.3ms idle=4.6ms 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` = ?) [326] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 04:54:20.213] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="390888230000000" [2026-06-17 04:54:20.216] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-06-17 04:54:20.232] [DEBUG] QUERY OK db=12.5ms queue=1.2ms idle=7.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "aff7bf68d2624e2288172c9fa06565c5f8dd5d2af54051330b3babb233b44b4d", 4706, 931, ~U[2026-06-17 04:54:20Z], "priv/ota/98251226730001/params.zip", 33, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 04:54:20.233] [INFO ] AutoPushService: Created push log 29577 for MF919 params.zip [2026-06-17 04:54:20.233] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 4706, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 04:54:20.234] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:54:20.234] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-06-17 04:54:20.236] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.8ms idle=21.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-06-17 04:54:20.242] [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-06-17 04:54:20.251] [DEBUG] QUERY OK db=5.5ms queue=0.4ms idle=13.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "69f1543313a85e43b805be8a2c57904c5476accb84954b05b5f322a14e43443a", 1508, 17947, ~U[2026-06-17 04:54:20Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 04:54:20.252] [INFO ] AutoPushService: Created push log 29578 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 04:54:20.252] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1508, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 04:54:20.252] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-06-17 04:54:20.252] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-06-17 04:54:20.253] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=16.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-06-17 04:54:20.253] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-06-17 04:54:20.254] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.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-06-17 04:54:20.254] [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-06-17 04:54:20.256] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 04:54:20.256] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:54:20.256] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 04:54:20.258] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=3.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-06-17 04:54:20.259] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 04:54:20.259] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-06-17 04:54:20.260] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.7ms 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:98 [2026-06-17 04:54:20.260] [INFO ] Terminal updated: 98251226730001 [2026-06-17 04:54:20.267] [DEBUG] QUERY OK source="tms_terminals" db=6.0ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 04:54:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 04:54:20.270] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=6.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-06-17 04:54:20.271] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=3.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-06-17 04:54:20.271] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 04:54:20.273] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=2.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:627 [2026-06-17 04:54:20.281] [DEBUG] QUERY OK source="tms_terminals" db=6.8ms queue=0.8ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 04:54:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 04:54:20.287] [DEBUG] QUERY OK db=5.8ms queue=0.1ms idle=8.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-06-17T12:57:33Z", ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 04:54:20.287] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39015, oid: "organization_id", upload_time: "2026-06-17T12:57:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]} [2026-06-17 04:54:20.287] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T12:57:33Z", "value" => "online"} [2026-06-17 04:54:20.293] [DEBUG] QUERY OK db=5.5ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T12:57:33Z", "online", "status", 39015, ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:20.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303167, itemkey: "status", value: "online", timestamp: "2026-06-17T12:57:33Z", message: "Terminal status update", status_log_id: 39015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]}} [2026-06-17 04:54:20.294] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-06-17 04:54:20.295] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:54:20.295] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T12:57:33Z", "value" => "60"} [2026-06-17 04:54:20.302] [DEBUG] QUERY OK db=6.3ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T12:57:33Z", "60", "battery", 39015, ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:20.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303168, itemkey: "battery", value: "60", timestamp: "2026-06-17T12:57:33Z", message: "Battery level", status_log_id: 39015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]}} [2026-06-17 04:54:20.302] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T12:57:33Z", "value" => "online"} [2026-06-17 04:54:20.310] [DEBUG] QUERY OK db=5.7ms idle=10.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T12:57:33Z", "online", "network", 39015, ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:20.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303169, itemkey: "network", value: "online", timestamp: "2026-06-17T12:57:33Z", message: "Network connectivity", status_log_id: 39015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]}} [2026-06-17 04:54:20.311] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-06-17 04:54:20.311] [INFO ] Terminal 98251226730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 04:54:20.311] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T12:57:33Z", "value" => "0"} [2026-06-17 04:54:20.321] [DEBUG] QUERY OK db=7.0ms idle=11.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T12:57:33Z", "0", "cpu", 39015, ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:20.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303170, itemkey: "cpu", value: "0", timestamp: "2026-06-17T12:57:33Z", message: "CPU usage percentage", status_log_id: 39015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]}} [2026-06-17 04:54:20.321] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T12:57:33Z", "value" => "1.0.0"} [2026-06-17 04:54:20.328] [DEBUG] QUERY OK db=4.9ms queue=0.1ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T12:57:33Z", "1.0.0", "parameter_config", 39015, ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:20.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303171, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T12:57:33Z", message: "Current parameters version", status_log_id: 39015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]}} [2026-06-17 04:54:20.329] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T12:57:33Z", "value" => "1.0.1"} [2026-06-17 04:54:20.336] [DEBUG] QUERY OK db=5.8ms idle=8.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T12:57:33Z", "1.0.1", "emv_config", 39015, ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:20.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303172, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T12:57:33Z", message: "Current EMV config version", status_log_id: 39015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]}} [2026-06-17 04:54:20.336] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T12:57:33Z", "value" => ""} [2026-06-17 04:54:20.345] [DEBUG] QUERY OK db=8.3ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T12:57:33Z", "keys_config", 39015, ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:20.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303173, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T12:57:33Z", message: "Current keys config version", status_log_id: 39015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]}} [2026-06-17 04:54:20.345] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T12:57:33Z", "value" => ""} [2026-06-17 04:54:20.353] [DEBUG] QUERY OK db=6.9ms idle=10.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T12:57:33Z", "application", 39015, ~N[2026-06-17 04:54:20], ~N[2026-06-17 04:54:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 04:54:20.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303174, itemkey: "application", value: nil, timestamp: "2026-06-17T12:57:33Z", message: "Current application version", status_log_id: 39015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 04:54:20], updated_at: ~N[2026-06-17 04:54:20]}} [2026-06-17 04:54:20.354] [WARN ] Unexpected async result [2026-06-17 04:54:20.354] [WARN ] Unexpected async result [2026-06-17 04:54:20.357] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=9.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 04:54:20.364] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 04:54:20.411] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T12:57:33Z"} [2026-06-17 04:54:20.411] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_Sham"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-06-17T12:57:33Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 22, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_Sham", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_Sham", online_devices: %{}}, initial_args: [client_id: "phoenix_client_Sham"]}} [2026-06-17 04:55:12.489] [INFO ] Running offline device check... [2026-06-17 04:55:12.489] [INFO ] Starting offline device check... [2026-06-17 04:55:12.490] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=474.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:677 [2026-06-17 04:55:12.497] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms queue=1.1ms idle=364.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:688 [2026-06-17 04:55:12.499] [INFO ] Starting scheduled rule validation [2026-06-17 04:55:12.499] [DEBUG] Validating missing assignments [2026-06-17 04:55:12.500] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=3.0ms 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-06-17 04:55:12.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=6.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:688 [2026-06-17 04:55:12.503] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.3ms idle=0.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.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-06-17 04:55:12.504] [DEBUG] Re-applied 0 rules during validation [2026-06-17 04:55:12.504] [DEBUG] Validating invalid assignments [2026-06-17 04:55:12.504] [DEBUG] Validating rule consistency [2026-06-17 04:55:12.504] [DEBUG] Updating group terminal counts [2026-06-17 04:55:12.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=1.0ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.507] [DEBUG] QUERY OK source="terminal_groups" db=1.0ms queue=1.5ms idle=0.8ms 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-06-17 04:55:12.507] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.508] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.509] [DEBUG] QUERY OK source="terminal_groups" db=0.7ms queue=1.4ms idle=0.2ms 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-06-17 04:55:12.510] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.510] [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:688 [2026-06-17 04:55:12.511] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.511] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.519] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.6ms idle=4.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-06-17 04:55:12.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.520] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms 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-06-17 04:55:12.520] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.521] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.2ms 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-06-17 04:55:12.523] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms queue=1.3ms idle=0.1ms 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-06-17 04:55:12.525] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=1.0ms idle=0.2ms 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-06-17 04:55:12.526] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=0.2ms idle=0.2ms 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-06-17 04:55:12.526] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 04:55:12.526] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 04:55:12.527] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.531] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.536] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.538] [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:688 [2026-06-17 04:55:12.546] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.547] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.548] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.549] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.551] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.551] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=10.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.564] [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:688 [2026-06-17 04:55:12.569] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.570] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.572] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.573] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.574] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.579] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.581] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.582] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.584] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 04:55:12.585] [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:688 [2026-06-17 04:55:12.585] [INFO ] Offline device check completed. Found 38 offline devices, updated 0 statuses. [2026-06-17 04:55:12.585] [INFO ] Offline device check completed successfully [2026-06-17 05:00:16.980] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 59m, MIS in 1h 59m [2026-06-17 05:00:17.020] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 05:00:17.036] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 05:00:18.633] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 05:00:18.633] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 05:00:18.635] [INFO ] Building initial filter cache... [2026-06-17 05:00:18.655] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=2.5ms idle=883.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-06-17 05:00:18.664] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=1.1ms idle=58.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-06-17 05:00:18.664] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 05:00:18.725] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 05:00:18.728] [INFO ] Device phoenix_client_Sham connected [2026-06-17 05:00:18.740] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 05:00:19.782] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 46µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "A2cwAVsZIUkAcT0kOwZgNTgvbxRAH34i30Zq9mM07HQUqO8PwHXwyS9J", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 05:00:20.333] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 05:00:20.365] [DEBUG] QUERY OK source="users_tokens" db=0.4ms queue=1.7ms idle=1771.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 05:00:20.352275Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 05:00:20.391] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms idle=1622.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 05:00:20.396] [DEBUG] QUERY OK source="app_packages" db=0.3ms queue=0.5ms idle=613.1ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 05:00:20.408] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.5ms idle=16.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 05:00:20.418] [DEBUG] QUERY OK source="terminal_groups" db=1.2ms queue=0.7ms idle=19.2ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 05:00:20.418] [DEBUG] Replied in 89ms [2026-06-17 05:00:20.424] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 05:00:20.425] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=15.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 05:00:20.426] [DEBUG] Replied in 1ms [2026-06-17 05:00:38.284] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:00:38.285] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T04:59:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T04:59:48Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T04:59:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T04:59:48Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T04:59:48Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T04:59:48Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T04:59:48Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T04:59:48Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T04:59:48Z","vendor":"MoreFun"} [2026-06-17 05:00:38.288] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:59:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:59:48Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:59:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:59:48Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:59:48Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:59:48Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:59:48Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:59:48Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T04:59:48Z", "vendor" => "MoreFun"} [2026-06-17 05:00:38.288] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 05:00:38.309] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:00:38.309] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:00:38.318] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.8ms idle=1467.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-06-17 05:00:38.320] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.8ms idle=467.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:00:38.330] [DEBUG] QUERY OK source="parameter_template_values" db=1.9ms queue=0.6ms idle=8.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-06-17 05:00:38.352] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=3.6ms idle=26.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-06-17 05:00:38.371] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms queue=0.6ms idle=40.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:00:38.395] [DEBUG] QUERY OK source="pos_merchant" db=0.3ms queue=16.5ms idle=26.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:00:38.406] [DEBUG] QUERY OK db=3.4ms queue=0.7ms idle=1792.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 ["372916040000000"] [2026-06-17 05:00:38.406] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:00:38.411] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms queue=0.8ms idle=38.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:00:38.419] [DEBUG] QUERY OK source="address" db=0.3ms queue=0.3ms idle=22.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:00:38.419] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:00:38.432] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:00:38.533] [DEBUG] QUERY OK db=59.4ms queue=1.6ms idle=50.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "7053aab20d8a4b829f9dbad19e69dadb5303907d9229f3fa1fb284e67556d2b6", 5346, 937, ~U[2026-06-17 05:00:38Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:00:38], ~N[2026-06-17 05:00:38]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:00:38.535] [INFO ] AutoPushService: Created push log 29583 for MF919 params.zip [2026-06-17 05:00:38.545] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5346, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:00:38.545] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:00:38.555] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:00:38.574] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=2.0ms idle=152.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-06-17 05:00:38.589] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:00:38.615] [DEBUG] QUERY OK db=24.1ms queue=1.4ms idle=66.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9a580e7a65930ffc117eec49dba72724555d6eb2b64b26b0fe659a5116077389", 1123, 17947, ~U[2026-06-17 05:00:38Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:00:38], ~N[2026-06-17 05:00:38]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:00:38.615] [INFO ] AutoPushService: Created push log 29584 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:00:38.616] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1123, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:00:38.616] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:00:38.616] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:00:38.621] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms idle=44.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-06-17 05:00:38.633] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:00:38.637] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=20.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:00:38.637] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:00:38.754] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:00:38.754] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:00:38.755] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:00:38.758] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms queue=0.3ms idle=134.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-06-17 05:00:38.759] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:00:38.759] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:00:38.760] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=121.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:00:38.772] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:00:38.808] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms queue=0.4ms idle=13.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:00:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:00:38.814] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:00:38.816] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=54.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:00:38.837] [DEBUG] QUERY OK source="tms_terminals" db=20.4ms queue=0.5ms idle=8.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:00:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:00:38.874] [DEBUG] QUERY OK db=23.2ms queue=1.5ms idle=32.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T04:59:48Z", ~N[2026-06-17 05:00:38], ~N[2026-06-17 05:00:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:00:38.892] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39023, oid: "organization_id", upload_time: "2026-06-17T04:59:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:38], updated_at: ~N[2026-06-17 05:00:38]} [2026-06-17 05:00:38.893] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:59:48Z", "value" => "online"} [2026-06-17 05:00:38.912] [DEBUG] QUERY OK db=18.1ms queue=1.3ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T04:59:48Z", "online", "status", 39023, ~N[2026-06-17 05:00:38], ~N[2026-06-17 05:00:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:38.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303255, itemkey: "status", value: "online", timestamp: "2026-06-17T04:59:48Z", message: "Terminal status update", status_log_id: 39023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:38], updated_at: ~N[2026-06-17 05:00:38]}} [2026-06-17 05:00:38.914] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:00:38.914] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:59:48Z", "value" => "57"} [2026-06-17 05:00:38.917] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:00:38.948] [DEBUG] QUERY OK db=29.5ms queue=1.1ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T04:59:48Z", "57", "battery", 39023, ~N[2026-06-17 05:00:38], ~N[2026-06-17 05:00:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:38.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303256, itemkey: "battery", value: "57", timestamp: "2026-06-17T04:59:48Z", message: "Battery level", status_log_id: 39023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:38], updated_at: ~N[2026-06-17 05:00:38]}} [2026-06-17 05:00:38.948] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:59:48Z", "value" => "online"} [2026-06-17 05:00:38.965] [DEBUG] QUERY OK db=13.1ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T04:59:48Z", "online", "network", 39023, ~N[2026-06-17 05:00:38], ~N[2026-06-17 05:00:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:38.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303257, itemkey: "network", value: "online", timestamp: "2026-06-17T04:59:48Z", message: "Network connectivity", status_log_id: 39023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:38], updated_at: ~N[2026-06-17 05:00:38]}} [2026-06-17 05:00:38.965] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:00:38.966] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:59:48Z", "value" => "0"} [2026-06-17 05:00:38.966] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:00:38.999] [DEBUG] QUERY OK db=32.1ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T04:59:48Z", "0", "cpu", 39023, ~N[2026-06-17 05:00:38], ~N[2026-06-17 05:00:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:39.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303258, itemkey: "cpu", value: "0", timestamp: "2026-06-17T04:59:48Z", message: "CPU usage percentage", status_log_id: 39023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:38], updated_at: ~N[2026-06-17 05:00:38]}} [2026-06-17 05:00:39.001] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:59:48Z", "value" => ""} [2026-06-17 05:00:39.023] [DEBUG] QUERY OK db=19.5ms queue=1.9ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T04:59:48Z", "parameter_config", 39023, ~N[2026-06-17 05:00:39], ~N[2026-06-17 05:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:39.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303259, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T04:59:48Z", message: "Current parameters version", status_log_id: 39023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:39], updated_at: ~N[2026-06-17 05:00:39]}} [2026-06-17 05:00:39.024] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:59:48Z", "value" => ""} [2026-06-17 05:00:39.054] [DEBUG] QUERY OK db=25.8ms queue=0.4ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T04:59:48Z", "emv_config", 39023, ~N[2026-06-17 05:00:39], ~N[2026-06-17 05:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:39.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303260, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T04:59:48Z", message: "Current EMV config version", status_log_id: 39023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:39], updated_at: ~N[2026-06-17 05:00:39]}} [2026-06-17 05:00:39.054] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:59:48Z", "value" => ""} [2026-06-17 05:00:39.073] [DEBUG] QUERY OK db=17.0ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T04:59:48Z", "keys_config", 39023, ~N[2026-06-17 05:00:39], ~N[2026-06-17 05:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:39.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303261, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T04:59:48Z", message: "Current keys config version", status_log_id: 39023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:39], updated_at: ~N[2026-06-17 05:00:39]}} [2026-06-17 05:00:39.074] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:59:48Z", "value" => ""} [2026-06-17 05:00:39.090] [DEBUG] QUERY OK db=15.1ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T04:59:48Z", "application", 39023, ~N[2026-06-17 05:00:39], ~N[2026-06-17 05:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:39.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303262, itemkey: "application", value: nil, timestamp: "2026-06-17T04:59:48Z", message: "Current application version", status_log_id: 39023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:39], updated_at: ~N[2026-06-17 05:00:39]}} [2026-06-17 05:00:39.093] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=18.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:00:39.100] [WARN ] Unexpected async result [2026-06-17 05:00:39.101] [WARN ] Unexpected async result [2026-06-17 05:00:39.103] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:00:53.472] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:00:53.472] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:00:03Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:00:03Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:00:03Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:00:03Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:00:03Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:00:03Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:00:03Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:00:03Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:00:03Z","vendor":"MoreFun"} [2026-06-17 05:00:53.473] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:00:03Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:00:03Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:00:03Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:00:03Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:00:03Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:00:03Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:00:03Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:00:03Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:00:03Z", "vendor" => "MoreFun"} [2026-06-17 05:00:53.473] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:00:53.473] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:00:53.473] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:00:53.474] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=856.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-06-17 05:00:53.475] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=571.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:00:53.476] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=0.3ms 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-06-17 05:00:53.478] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.4ms idle=1.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-06-17 05:00:53.478] [DEBUG] QUERY OK source="pos_terminal" db=0.2ms idle=2.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:00:53.519] [DEBUG] QUERY OK source="pos_merchant" db=40.8ms idle=0.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:00:53.521] [DEBUG] QUERY OK db=0.5ms queue=0.6ms idle=1905.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 ["372916040000000"] [2026-06-17 05:00:53.521] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:00:53.522] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=43.1ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:00:53.523] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:00:53.523] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:00:53.524] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:00:53.566] [DEBUG] QUERY OK db=39.9ms queue=0.7ms idle=3.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8fb04de2f577c9894c0e48d5dd69b94abde3dfe67b092938c77d2499f9543214", 100, 937, ~U[2026-06-17 05:00:53Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:00:53.567] [INFO ] AutoPushService: Created push log 29585 for MF919 params.zip [2026-06-17 05:00:53.567] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 100, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:00:53.567] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:00:53.567] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:00:53.568] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms idle=44.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-06-17 05:00:53.571] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:00:53.596] [DEBUG] QUERY OK db=23.0ms idle=6.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e58b68dceda7ef29efab76096056aa32d0b518583e755f27ddaf0f8ab1bc28fd", 164, 17947, ~U[2026-06-17 05:00:53Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:00:53.596] [INFO ] AutoPushService: Created push log 29586 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:00:53.596] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 164, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:00:53.596] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:00:53.596] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:00:53.597] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=28.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-06-17 05:00:53.598] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:00:53.600] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:00:53.600] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:00:53.601] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:00:53.601] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:00:53.601] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:00:53.602] [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-06-17 05:00:53.602] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:00:53.602] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:00:53.603] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:00:53.603] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:00:53.680] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms queue=41.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "1.0.1", "1.0.0", ~N[2026-06-17 05:00:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:00:53.682] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.3ms idle=77.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-06-17 05:00:53.683] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:00:53.683] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:00:53.684] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:00:53.739] [DEBUG] QUERY OK source="tms_terminals" db=13.6ms queue=41.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:00:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:00:53.754] [DEBUG] QUERY OK db=14.1ms idle=55.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:00:03Z", ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:00:53.754] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39024, oid: "organization_id", upload_time: "2026-06-17T05:00:03Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]} [2026-06-17 05:00:53.754] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:00:03Z", "value" => "online"} [2026-06-17 05:00:53.779] [DEBUG] QUERY OK db=24.5ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:00:03Z", "online", "status", 39024, ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:53.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303263, itemkey: "status", value: "online", timestamp: "2026-06-17T05:00:03Z", message: "Terminal status update", status_log_id: 39024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]}} [2026-06-17 05:00:53.780] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:00:53.780] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:00:53.780] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:00:03Z", "value" => "57"} [2026-06-17 05:00:53.814] [DEBUG] QUERY OK db=33.4ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:00:03Z", "57", "battery", 39024, ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:53.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303264, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:00:03Z", message: "Battery level", status_log_id: 39024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]}} [2026-06-17 05:00:53.815] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:00:03Z", "value" => "online"} [2026-06-17 05:00:53.834] [DEBUG] QUERY OK db=18.0ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:00:03Z", "online", "network", 39024, ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:53.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303265, itemkey: "network", value: "online", timestamp: "2026-06-17T05:00:03Z", message: "Network connectivity", status_log_id: 39024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]}} [2026-06-17 05:00:53.834] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:00:53.834] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:00:03Z", "value" => "0"} [2026-06-17 05:00:53.834] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:00:53.846] [DEBUG] QUERY OK db=11.4ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:00:03Z", "0", "cpu", 39024, ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:53.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303266, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:00:03Z", message: "CPU usage percentage", status_log_id: 39024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]}} [2026-06-17 05:00:53.846] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:00:03Z", "value" => "1.0.0"} [2026-06-17 05:00:53.872] [DEBUG] QUERY OK db=25.3ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:00:03Z", "1.0.0", "parameter_config", 39024, ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:53.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303267, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:00:03Z", message: "Current parameters version", status_log_id: 39024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]}} [2026-06-17 05:00:53.872] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:00:03Z", "value" => "1.0.1"} [2026-06-17 05:00:53.913] [DEBUG] QUERY OK db=40.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:00:03Z", "1.0.1", "emv_config", 39024, ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:53.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303268, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:00:03Z", message: "Current EMV config version", status_log_id: 39024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]}} [2026-06-17 05:00:53.913] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:00:03Z", "value" => ""} [2026-06-17 05:00:53.938] [DEBUG] QUERY OK db=24.2ms idle=8.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:00:03Z", "keys_config", 39024, ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:53.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303269, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:00:03Z", message: "Current keys config version", status_log_id: 39024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]}} [2026-06-17 05:00:53.938] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:00:03Z", "value" => ""} [2026-06-17 05:00:53.956] [DEBUG] QUERY OK db=16.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:00:03Z", "application", 39024, ~N[2026-06-17 05:00:53], ~N[2026-06-17 05:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:53.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303270, itemkey: "application", value: nil, timestamp: "2026-06-17T05:00:03Z", message: "Current application version", status_log_id: 39024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:53], updated_at: ~N[2026-06-17 05:00:53]}} [2026-06-17 05:00:53.956] [WARN ] Unexpected async result [2026-06-17 05:00:53.957] [WARN ] Unexpected async result [2026-06-17 05:00:53.957] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=18.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:00:53.961] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:00:58.980] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:00:58.980] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:00:09Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:00:09Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:00:09Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:00:09Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:00:09Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:00:09Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:00:09Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:00:09Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:00:09Z","vendor":"MoreFun"} [2026-06-17 05:00:58.981] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:00:09Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:00:09Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:00:09Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:00:09Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:00:09Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:00:09Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:00:09Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:00:09Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:00:09Z", "vendor" => "MoreFun"} [2026-06-17 05:00:58.981] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:00:58.981] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:00:58.981] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:00:58.983] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=1066.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-06-17 05:00:58.984] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=65.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:00:58.985] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms 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-06-17 05:00:58.987] [DEBUG] QUERY OK source="parameter_definitions" db=1.4ms queue=0.6ms idle=1.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-06-17 05:00:58.988] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:00:59.030] [DEBUG] QUERY OK source="pos_merchant" db=40.9ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:00:59.032] [DEBUG] QUERY OK db=0.9ms queue=1.2ms idle=414.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 ["372916040000000"] [2026-06-17 05:00:59.032] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:00:59.033] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=44.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:00:59.034] [DEBUG] QUERY OK source="address" db=0.8ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:00:59.035] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:00:59.035] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:00:59.072] [DEBUG] QUERY OK db=34.9ms queue=0.4ms idle=2.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8e003360b36561fc6975edc63458c462f8920f8a89353c434f857879a694ca5f", 5634, 937, ~U[2026-06-17 05:00:59Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:00:59.072] [INFO ] AutoPushService: Created push log 29587 for MF919 params.zip [2026-06-17 05:00:59.072] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5634, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:00:59.072] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:00:59.072] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:00:59.074] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms queue=0.1ms idle=37.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-06-17 05:00:59.077] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:00:59.107] [DEBUG] QUERY OK db=27.6ms queue=0.4ms idle=7.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e8e0241bc12802766754c69cece6a290aa9ff8aeab92512df3e7584ad3dd1a0d", 5698, 17947, ~U[2026-06-17 05:00:59Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:00:59.108] [INFO ] AutoPushService: Created push log 29588 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:00:59.108] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 5698, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:00:59.108] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:00:59.109] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:00:59.110] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=35.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-06-17 05:00:59.110] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:00:59.112] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:00:59.112] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:00:59.113] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:00:59.114] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:00:59.114] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:00:59.115] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 05:00:59.115] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:00:59.115] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:00:59.116] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:00:59.117] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:00:59.136] [DEBUG] QUERY OK source="tms_terminals" db=17.3ms queue=0.3ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:00:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:00:59.140] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=21.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-06-17 05:00:59.141] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=4.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-06-17 05:00:59.141] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:00:59.142] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:00:59.172] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:00:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:00:59.196] [DEBUG] QUERY OK db=23.6ms queue=0.6ms idle=29.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:00:09Z", ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:00:59.197] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39025, oid: "organization_id", upload_time: "2026-06-17T05:00:09Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]} [2026-06-17 05:00:59.197] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:00:09Z", "value" => "online"} [2026-06-17 05:00:59.215] [DEBUG] QUERY OK db=17.7ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:00:09Z", "online", "status", 39025, ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:59.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303271, itemkey: "status", value: "online", timestamp: "2026-06-17T05:00:09Z", message: "Terminal status update", status_log_id: 39025, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]}} [2026-06-17 05:00:59.215] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:00:59.217] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:00:09Z", "value" => "57"} [2026-06-17 05:00:59.217] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:00:59.230] [DEBUG] QUERY OK db=13.2ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:00:09Z", "57", "battery", 39025, ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:59.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303272, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:00:09Z", message: "Battery level", status_log_id: 39025, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]}} [2026-06-17 05:00:59.231] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:00:09Z", "value" => "online"} [2026-06-17 05:00:59.275] [DEBUG] QUERY OK db=44.1ms queue=0.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:00:09Z", "online", "network", 39025, ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:59.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303273, itemkey: "network", value: "online", timestamp: "2026-06-17T05:00:09Z", message: "Network connectivity", status_log_id: 39025, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]}} [2026-06-17 05:00:59.276] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:00:59.276] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:00:09Z", "value" => "0"} [2026-06-17 05:00:59.276] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:00:59.308] [DEBUG] QUERY OK db=31.9ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:00:09Z", "0", "cpu", 39025, ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:59.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303274, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:00:09Z", message: "CPU usage percentage", status_log_id: 39025, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]}} [2026-06-17 05:00:59.309] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:00:09Z", "value" => "1.0.0"} [2026-06-17 05:00:59.367] [DEBUG] QUERY OK db=57.8ms queue=0.1ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:00:09Z", "1.0.0", "parameter_config", 39025, ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:59.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303275, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:00:09Z", message: "Current parameters version", status_log_id: 39025, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]}} [2026-06-17 05:00:59.367] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:00:09Z", "value" => "1.0.1"} [2026-06-17 05:00:59.399] [DEBUG] QUERY OK db=31.1ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:00:09Z", "1.0.1", "emv_config", 39025, ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:59.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303276, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:00:09Z", message: "Current EMV config version", status_log_id: 39025, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]}} [2026-06-17 05:00:59.400] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:00:09Z", "value" => ""} [2026-06-17 05:00:59.419] [DEBUG] QUERY OK db=18.5ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:00:09Z", "keys_config", 39025, ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:59.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303277, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:00:09Z", message: "Current keys config version", status_log_id: 39025, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]}} [2026-06-17 05:00:59.419] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:00:09Z", "value" => ""} [2026-06-17 05:00:59.452] [DEBUG] QUERY OK db=31.0ms queue=1.4ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:00:09Z", "application", 39025, ~N[2026-06-17 05:00:59], ~N[2026-06-17 05:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:00:59.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303278, itemkey: "application", value: nil, timestamp: "2026-06-17T05:00:09Z", message: "Current application version", status_log_id: 39025, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:00:59], updated_at: ~N[2026-06-17 05:00:59]}} [2026-06-17 05:00:59.452] [WARN ] Unexpected async result [2026-06-17 05:00:59.452] [WARN ] Unexpected async result [2026-06-17 05:00:59.454] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=34.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:00:59.457] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:01:06.083] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:01:06.083] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:00:16Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:00:16Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:00:16Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:00:16Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:00:16Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:00:16Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:00:16Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:00:16Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:00:16Z","vendor":"MoreFun"} [2026-06-17 05:01:06.085] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:00:16Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:00:16Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:00:16Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:00:16Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:00:16Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:00:16Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:00:16Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:00:16Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:00:16Z", "vendor" => "MoreFun"} [2026-06-17 05:01:06.085] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:01:06.086] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:01:06.086] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:01:06.087] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1146.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:01:06.088] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=145.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:01:06.091] [DEBUG] QUERY OK source="parameter_template_values" db=1.1ms idle=2.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-06-17 05:01:06.092] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.5ms 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-06-17 05:01:06.094] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=2.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:01:06.134] [DEBUG] QUERY OK source="pos_merchant" db=39.7ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:01:06.136] [DEBUG] QUERY OK db=0.9ms queue=0.8ms idle=1518.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 ["372916040000000"] [2026-06-17 05:01:06.136] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:01:06.137] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:01:06.137] [DEBUG] QUERY OK source="address" db=0.4ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:01:06.137] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:01:06.139] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:01:06.165] [DEBUG] QUERY OK db=23.5ms queue=0.2ms idle=4.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b53a7b007729bda1b3695c9a26c1609a1f500de8a94379513b10b18d7ba26580", 1315, 937, ~U[2026-06-17 05:01:06Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:01:06.165] [INFO ] AutoPushService: Created push log 29589 for MF919 params.zip [2026-06-17 05:01:06.166] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1315, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:01:06.166] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:01:06.167] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:01:06.169] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=30.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-06-17 05:01:06.173] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:01:06.201] [DEBUG] QUERY OK db=26.9ms idle=8.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "864b5cdd5e8be3ddc18fe375a45fd3e3b5346a9434fb442c274eac9b152e8513", 260, 17947, ~U[2026-06-17 05:01:06Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:01:06.201] [INFO ] AutoPushService: Created push log 29590 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:01:06.201] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 260, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:01:06.202] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:01:06.202] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:01:06.203] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=32.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-06-17 05:01:06.203] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:01:06.204] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:01:06.204] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:01:06.206] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:01:06.206] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:01:06.206] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:01:06.208] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 05:01:06.208] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:01:06.208] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:01:06.209] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:01:06.209] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:01:06.221] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:01:06], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:01:06.222] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=12.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-06-17 05:01:06.223] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-06-17 05:01:06.223] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:01:06.224] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:01:06.238] [DEBUG] QUERY OK source="tms_terminals" db=13.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:01:06], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:01:06.286] [DEBUG] QUERY OK db=47.9ms idle=14.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:00:16Z", ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:01:06.287] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39026, oid: "organization_id", upload_time: "2026-06-17T05:00:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]} [2026-06-17 05:01:06.287] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:00:16Z", "value" => "online"} [2026-06-17 05:01:06.312] [DEBUG] QUERY OK db=24.5ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:00:16Z", "online", "status", 39026, ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:06.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303279, itemkey: "status", value: "online", timestamp: "2026-06-17T05:00:16Z", message: "Terminal status update", status_log_id: 39026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]}} [2026-06-17 05:01:06.314] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:01:06.315] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:01:06.315] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:00:16Z", "value" => "57"} [2026-06-17 05:01:06.331] [DEBUG] QUERY OK db=14.9ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:00:16Z", "57", "battery", 39026, ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:06.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303280, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:00:16Z", message: "Battery level", status_log_id: 39026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]}} [2026-06-17 05:01:06.331] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:00:16Z", "value" => "online"} [2026-06-17 05:01:06.364] [DEBUG] QUERY OK db=32.4ms queue=0.1ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:00:16Z", "online", "network", 39026, ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:06.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303281, itemkey: "network", value: "online", timestamp: "2026-06-17T05:00:16Z", message: "Network connectivity", status_log_id: 39026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]}} [2026-06-17 05:01:06.365] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:01:06.365] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:00:16Z", "value" => "0"} [2026-06-17 05:01:06.365] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:01:06.389] [DEBUG] QUERY OK db=22.9ms queue=0.6ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:00:16Z", "0", "cpu", 39026, ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:06.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303282, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:00:16Z", message: "CPU usage percentage", status_log_id: 39026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]}} [2026-06-17 05:01:06.389] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:00:16Z", "value" => "1.0.0"} [2026-06-17 05:01:06.401] [DEBUG] QUERY OK db=11.8ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:00:16Z", "1.0.0", "parameter_config", 39026, ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:06.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303283, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:00:16Z", message: "Current parameters version", status_log_id: 39026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]}} [2026-06-17 05:01:06.402] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:00:16Z", "value" => "1.0.1"} [2026-06-17 05:01:06.413] [DEBUG] QUERY OK db=10.7ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:00:16Z", "1.0.1", "emv_config", 39026, ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:06.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303284, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:00:16Z", message: "Current EMV config version", status_log_id: 39026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]}} [2026-06-17 05:01:06.413] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:00:16Z", "value" => ""} [2026-06-17 05:01:06.451] [DEBUG] QUERY OK db=37.0ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:00:16Z", "keys_config", 39026, ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:06.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303285, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:00:16Z", message: "Current keys config version", status_log_id: 39026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]}} [2026-06-17 05:01:06.451] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:00:16Z", "value" => ""} [2026-06-17 05:01:06.476] [DEBUG] QUERY OK db=24.3ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:00:16Z", "application", 39026, ~N[2026-06-17 05:01:06], ~N[2026-06-17 05:01:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:06.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303286, itemkey: "application", value: nil, timestamp: "2026-06-17T05:00:16Z", message: "Current application version", status_log_id: 39026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:06], updated_at: ~N[2026-06-17 05:01:06]}} [2026-06-17 05:01:06.477] [WARN ] Unexpected async result [2026-06-17 05:01:06.477] [WARN ] Unexpected async result [2026-06-17 05:01:06.482] [DEBUG] QUERY OK source="tms_terminals" db=4.0ms queue=0.1ms idle=27.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:01:06.486] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:01:35.794] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:01:35.794] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:00:46Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:00:46Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:00:46Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:00:46Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:00:46Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:00:46Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:00:46Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:00:46Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:00:46Z","vendor":"MoreFun"} [2026-06-17 05:01:35.794] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:00:46Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:00:46Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:00:46Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:00:46Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:00:46Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:00:46Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:00:46Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:00:46Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:00:46Z", "vendor" => "MoreFun"} [2026-06-17 05:01:35.794] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:01:35.795] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:01:35.795] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:01:35.795] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1176.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-06-17 05:01:35.796] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.3ms idle=768.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:01:35.798] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms idle=1.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-06-17 05:01:35.799] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.5ms 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-06-17 05:01:35.800] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=2.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:01:35.841] [DEBUG] QUERY OK source="pos_merchant" db=40.0ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:01:35.842] [DEBUG] QUERY OK db=0.5ms queue=0.4ms idle=1225.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 ["372916040000000"] [2026-06-17 05:01:35.842] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:01:35.843] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:01:35.844] [DEBUG] QUERY OK source="address" db=0.8ms idle=2.3ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:01:35.844] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:01:35.845] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:01:35.898] [DEBUG] QUERY OK db=52.0ms idle=2.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b4fb4cb0faef95c7541b0aacf094dd811412c26f8281110c144fbf9e4e3ef4ed", 5, 937, ~U[2026-06-17 05:01:35Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:01:35], ~N[2026-06-17 05:01:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:01:35.898] [INFO ] AutoPushService: Created push log 29591 for MF919 params.zip [2026-06-17 05:01:35.898] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:01:35.898] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:01:35.899] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:01:35.900] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=55.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-06-17 05:01:35.903] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:01:35.927] [DEBUG] QUERY OK db=22.9ms idle=6.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "18a4a28206b865d5221cb4d64e3a4dc3a18a2d09cfdfa094276ddb7d7199c720", 5954, 17947, ~U[2026-06-17 05:01:35Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:01:35], ~N[2026-06-17 05:01:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:01:35.927] [INFO ] AutoPushService: Created push log 29592 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:01:35.927] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 5954, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:01:35.927] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:01:35.928] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:01:35.929] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=28.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-06-17 05:01:35.929] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:01:35.931] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:01:35.931] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:01:35.933] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:01:35.933] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:01:35.934] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:01:35.935] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms 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-06-17 05:01:35.935] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:01:35.935] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:01:35.936] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:01:35.936] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:01:35.948] [DEBUG] QUERY OK source="tms_terminals" db=11.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:01:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:01:35.949] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=12.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-06-17 05:01:35.950] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:01:35.951] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:01:35.952] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:01:35.983] [DEBUG] QUERY OK source="tms_terminals" db=30.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:01:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:01:36.008] [DEBUG] QUERY OK db=24.4ms queue=0.7ms idle=31.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:00:46Z", ~N[2026-06-17 05:01:35], ~N[2026-06-17 05:01:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:01:36.009] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39027, oid: "organization_id", upload_time: "2026-06-17T05:00:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:35], updated_at: ~N[2026-06-17 05:01:35]} [2026-06-17 05:01:36.009] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:00:46Z", "value" => "online"} [2026-06-17 05:01:36.033] [DEBUG] QUERY OK db=23.3ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:00:46Z", "online", "status", 39027, ~N[2026-06-17 05:01:36], ~N[2026-06-17 05:01:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:36.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303287, itemkey: "status", value: "online", timestamp: "2026-06-17T05:00:46Z", message: "Terminal status update", status_log_id: 39027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:36], updated_at: ~N[2026-06-17 05:01:36]}} [2026-06-17 05:01:36.033] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:01:36.033] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:01:36.033] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:00:46Z", "value" => "57"} [2026-06-17 05:01:36.050] [DEBUG] QUERY OK db=16.0ms idle=3.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:00:46Z", "57", "battery", 39027, ~N[2026-06-17 05:01:36], ~N[2026-06-17 05:01:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:36.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303288, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:00:46Z", message: "Battery level", status_log_id: 39027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:36], updated_at: ~N[2026-06-17 05:01:36]}} [2026-06-17 05:01:36.050] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:00:46Z", "value" => "online"} [2026-06-17 05:01:36.097] [DEBUG] QUERY OK db=46.0ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:00:46Z", "online", "network", 39027, ~N[2026-06-17 05:01:36], ~N[2026-06-17 05:01:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:36.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303289, itemkey: "network", value: "online", timestamp: "2026-06-17T05:00:46Z", message: "Network connectivity", status_log_id: 39027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:36], updated_at: ~N[2026-06-17 05:01:36]}} [2026-06-17 05:01:36.097] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:01:36.097] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:00:46Z", "value" => "0"} [2026-06-17 05:01:36.098] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:01:36.126] [DEBUG] QUERY OK db=28.4ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:00:46Z", "0", "cpu", 39027, ~N[2026-06-17 05:01:36], ~N[2026-06-17 05:01:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:36.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303290, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:00:46Z", message: "CPU usage percentage", status_log_id: 39027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:36], updated_at: ~N[2026-06-17 05:01:36]}} [2026-06-17 05:01:36.127] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:00:46Z", "value" => "1.0.0"} [2026-06-17 05:01:36.139] [DEBUG] QUERY OK db=11.4ms queue=0.4ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:00:46Z", "1.0.0", "parameter_config", 39027, ~N[2026-06-17 05:01:36], ~N[2026-06-17 05:01:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:36.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303291, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:00:46Z", message: "Current parameters version", status_log_id: 39027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:36], updated_at: ~N[2026-06-17 05:01:36]}} [2026-06-17 05:01:36.140] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:00:46Z", "value" => "1.0.1"} [2026-06-17 05:01:36.158] [DEBUG] QUERY OK db=18.1ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:00:46Z", "1.0.1", "emv_config", 39027, ~N[2026-06-17 05:01:36], ~N[2026-06-17 05:01:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:36.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303292, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:00:46Z", message: "Current EMV config version", status_log_id: 39027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:36], updated_at: ~N[2026-06-17 05:01:36]}} [2026-06-17 05:01:36.158] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:00:46Z", "value" => ""} [2026-06-17 05:01:36.182] [DEBUG] QUERY OK db=22.9ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:00:46Z", "keys_config", 39027, ~N[2026-06-17 05:01:36], ~N[2026-06-17 05:01:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:36.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303293, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:00:46Z", message: "Current keys config version", status_log_id: 39027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:36], updated_at: ~N[2026-06-17 05:01:36]}} [2026-06-17 05:01:36.182] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:00:46Z", "value" => ""} [2026-06-17 05:01:36.211] [DEBUG] QUERY OK db=28.5ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:00:46Z", "application", 39027, ~N[2026-06-17 05:01:36], ~N[2026-06-17 05:01:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:36.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303294, itemkey: "application", value: nil, timestamp: "2026-06-17T05:00:46Z", message: "Current application version", status_log_id: 39027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:36], updated_at: ~N[2026-06-17 05:01:36]}} [2026-06-17 05:01:36.211] [WARN ] Unexpected async result [2026-06-17 05:01:36.212] [WARN ] Unexpected async result [2026-06-17 05:01:36.212] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=29.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:01:36.217] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:01:40.862] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 05:01:40.862] [INFO ] Incoming JSON payload: {"oid":"12196cf1-f8bd-43b6-9332-7a3e468114e4","sn":"98251226730001","uploadTime":"2026-06-17T13:04:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"ram_free_mb","value":"904","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T13:04:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:04:54Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 05:01:40.864] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "12196cf1-f8bd-43b6-9332-7a3e468114e4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:04:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:04:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:04:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:04:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:04:54Z", "value" => "904"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:04:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:04:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:04:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:04:54Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:04:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:04:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T13:04:54Z", "vendor" => "morefun"} [2026-06-17 05:01:40.864] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 05:01:40.864] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 05:01:40.864] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 05:01:40.865] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1245.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-06-17 05:01:40.866] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.3ms idle=815.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-06-17 05:01:40.866] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 05:01:40.867] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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:98 [2026-06-17 05:01:40.868] [INFO ] Terminal updated: 98251226730001 [2026-06-17 05:01:40.893] [DEBUG] QUERY OK source="tms_terminals" db=25.0ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:01:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:01:40.893] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 05:01:40.894] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:01:40.924] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:01:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:01:40.936] [DEBUG] QUERY OK db=10.8ms idle=30.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "12196cf1-f8bd-43b6-9332-7a3e468114e4", "2026-06-17T13:04:54Z", ~N[2026-06-17 05:01:40], ~N[2026-06-17 05:01:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:01:40.936] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39028, oid: "12196cf1-f8bd-43b6-9332-7a3e468114e4", upload_time: "2026-06-17T13:04:54Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:40], updated_at: ~N[2026-06-17 05:01:40]} [2026-06-17 05:01:40.936] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:04:54Z", "value" => "morefun"} [2026-06-17 05:01:40.988] [DEBUG] QUERY OK db=10.8ms queue=40.9ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "morefun", "vendor", 39028, ~N[2026-06-17 05:01:40], ~N[2026-06-17 05:01:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:40.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303295, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:40], updated_at: ~N[2026-06-17 05:01:40]}} [2026-06-17 05:01:40.989] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:04:54Z", "value" => "kiosk_launcher"} [2026-06-17 05:01:41.053] [DEBUG] QUERY OK db=23.6ms queue=40.5ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "kiosk_launcher", "model", 39028, ~N[2026-06-17 05:01:40], ~N[2026-06-17 05:01:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303296, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:40], updated_at: ~N[2026-06-17 05:01:40]}} [2026-06-17 05:01:41.054] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:04:54Z", "value" => "1.0"} [2026-06-17 05:01:41.086] [DEBUG] QUERY OK db=32.2ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "1.0", "app_version", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303297, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.087] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:04:54Z", "value" => "13"} [2026-06-17 05:01:41.100] [DEBUG] QUERY OK db=13.3ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "13", "android_version", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303298, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.101] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:04:54Z", "value" => "904"} [2026-06-17 05:01:41.114] [DEBUG] QUERY OK db=11.9ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "904", "ram_free_mb", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303299, itemkey: "ram_free_mb", value: "904", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.114] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:04:54Z", "value" => "WIFI"} [2026-06-17 05:01:41.145] [DEBUG] QUERY OK db=30.2ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "WIFI", "network_type", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303300, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.145] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:04:54Z", "value" => "true"} [2026-06-17 05:01:41.169] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "true", "kiosk_active", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303301, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.169] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:04:54Z", "value" => ""} [2026-06-17 05:01:41.193] [DEBUG] QUERY OK db=22.5ms queue=0.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:04:54Z", "sim_operator", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303302, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.193] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"} [2026-06-17 05:01:41.207] [DEBUG] QUERY OK db=12.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "UNKNOWN", "sim_number", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303303, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.207] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"} [2026-06-17 05:01:41.221] [DEBUG] QUERY OK db=13.8ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "UNKNOWN", "sim_iccid", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303304, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.222] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"} [2026-06-17 05:01:41.261] [DEBUG] QUERY OK db=38.6ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "UNKNOWN", "sim_imsi", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303305, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.261] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"} [2026-06-17 05:01:41.291] [DEBUG] QUERY OK db=29.1ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "UNKNOWN", "sim_iccid2", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303306, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.292] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:04:54Z", "value" => "UNKNOWN"} [2026-06-17 05:01:41.357] [DEBUG] QUERY OK db=64.0ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "UNKNOWN", "sim_imsi2", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303307, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.357] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:04:54Z", "value" => "5"} [2026-06-17 05:01:41.372] [DEBUG] QUERY OK db=14.2ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "5", "data_usage_mb", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303308, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.373] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:04:54Z", "value" => "0"} [2026-06-17 05:01:41.393] [DEBUG] QUERY OK db=20.3ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "0", "mobile_data_mb", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303309, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.394] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:04:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 05:01:41.426] [DEBUG] QUERY OK db=30.4ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:04:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39028, ~N[2026-06-17 05:01:41], ~N[2026-06-17 05:01:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:41.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303310, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T13:04:54Z", message: nil, status_log_id: 39028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:41], updated_at: ~N[2026-06-17 05:01:41]}} [2026-06-17 05:01:41.428] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=33.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:01:41.432] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:01:55.783] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:01:55.783] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:01:06Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:01:06Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:01:06Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:01:06Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:01:06Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:01:06Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:01:06Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:01:06Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:01:06Z","vendor":"MoreFun"} [2026-06-17 05:01:55.784] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:06Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:06Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:06Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:06Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:06Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:06Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:06Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:06Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:01:06Z", "vendor" => "MoreFun"} [2026-06-17 05:01:55.784] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:01:55.784] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:01:55.784] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:01:55.785] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1165.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:01:55.786] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=695.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:01:55.787] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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-06-17 05:01:55.789] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.4ms idle=2.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-06-17 05:01:55.790] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=2.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:01:55.831] [DEBUG] QUERY OK source="pos_merchant" db=40.4ms idle=0.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:01:55.832] [DEBUG] QUERY OK db=0.5ms queue=0.7ms idle=213.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 ["372916040000000"] [2026-06-17 05:01:55.832] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:01:55.833] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:01:55.833] [DEBUG] QUERY OK source="address" db=0.4ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:01:55.833] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:01:55.834] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:01:55.865] [DEBUG] QUERY OK db=29.4ms idle=2.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1afce0412ae9df11bdf858409a2b37637cac563209cf0a3f39e310affd891671", 1571, 937, ~U[2026-06-17 05:01:55Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:01:55], ~N[2026-06-17 05:01:55]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:01:55.865] [INFO ] AutoPushService: Created push log 29593 for MF919 params.zip [2026-06-17 05:01:55.865] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1571, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:01:55.866] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:01:55.866] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:01:55.868] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=33.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.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 05:01:55.870] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:01:55.901] [DEBUG] QUERY OK db=30.2ms idle=6.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6297465751f91d84b172f6450e640bc11d05f91eed17890277078ae9466089aa", 6050, 17947, ~U[2026-06-17 05:01:55Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:01:55], ~N[2026-06-17 05:01:55]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:01:55.902] [INFO ] AutoPushService: Created push log 29594 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:01:55.902] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6050, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:01:55.902] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:01:55.902] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:01:55.904] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=34.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-06-17 05:01:55.904] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:01:55.906] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:01:55.907] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:01:55.909] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:01:55.909] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:01:55.909] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:01:55.910] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 05:01:55.910] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:01:55.910] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:01:55.911] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:01:55.912] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:01:55.939] [DEBUG] QUERY OK source="tms_terminals" db=27.0ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:01:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:01:55.941] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=28.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-06-17 05:01:55.942] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:01:55.943] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:01:55.945] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:01:55.958] [DEBUG] QUERY OK source="tms_terminals" db=13.0ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:01:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:01:55.972] [DEBUG] QUERY OK db=13.5ms idle=13.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:01:06Z", ~N[2026-06-17 05:01:55], ~N[2026-06-17 05:01:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:01:55.973] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39029, oid: "organization_id", upload_time: "2026-06-17T05:01:06Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:55], updated_at: ~N[2026-06-17 05:01:55]} [2026-06-17 05:01:55.973] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:06Z", "value" => "online"} [2026-06-17 05:01:55.996] [DEBUG] QUERY OK db=22.5ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:01:06Z", "online", "status", 39029, ~N[2026-06-17 05:01:55], ~N[2026-06-17 05:01:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:55.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303311, itemkey: "status", value: "online", timestamp: "2026-06-17T05:01:06Z", message: "Terminal status update", status_log_id: 39029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:55], updated_at: ~N[2026-06-17 05:01:55]}} [2026-06-17 05:01:55.996] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:01:55.996] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:06Z", "value" => "57"} [2026-06-17 05:01:55.996] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:01:56.020] [DEBUG] QUERY OK db=23.4ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:01:06Z", "57", "battery", 39029, ~N[2026-06-17 05:01:55], ~N[2026-06-17 05:01:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:56.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303312, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:01:06Z", message: "Battery level", status_log_id: 39029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:55], updated_at: ~N[2026-06-17 05:01:55]}} [2026-06-17 05:01:56.020] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:06Z", "value" => "online"} [2026-06-17 05:01:56.042] [DEBUG] QUERY OK db=21.2ms queue=0.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:01:06Z", "online", "network", 39029, ~N[2026-06-17 05:01:56], ~N[2026-06-17 05:01:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:56.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303313, itemkey: "network", value: "online", timestamp: "2026-06-17T05:01:06Z", message: "Network connectivity", status_log_id: 39029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:56], updated_at: ~N[2026-06-17 05:01:56]}} [2026-06-17 05:01:56.042] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:01:56.043] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:06Z", "value" => "0"} [2026-06-17 05:01:56.043] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:01:56.057] [DEBUG] QUERY OK db=13.8ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:01:06Z", "0", "cpu", 39029, ~N[2026-06-17 05:01:56], ~N[2026-06-17 05:01:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:56.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303314, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:01:06Z", message: "CPU usage percentage", status_log_id: 39029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:56], updated_at: ~N[2026-06-17 05:01:56]}} [2026-06-17 05:01:56.058] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:06Z", "value" => "1.0.0"} [2026-06-17 05:01:56.080] [DEBUG] QUERY OK db=21.3ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:01:06Z", "1.0.0", "parameter_config", 39029, ~N[2026-06-17 05:01:56], ~N[2026-06-17 05:01:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:56.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303315, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:01:06Z", message: "Current parameters version", status_log_id: 39029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:56], updated_at: ~N[2026-06-17 05:01:56]}} [2026-06-17 05:01:56.081] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:06Z", "value" => "1.0.1"} [2026-06-17 05:01:56.106] [DEBUG] QUERY OK db=24.6ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:01:06Z", "1.0.1", "emv_config", 39029, ~N[2026-06-17 05:01:56], ~N[2026-06-17 05:01:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:56.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303316, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:01:06Z", message: "Current EMV config version", status_log_id: 39029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:56], updated_at: ~N[2026-06-17 05:01:56]}} [2026-06-17 05:01:56.107] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:06Z", "value" => ""} [2026-06-17 05:01:56.166] [DEBUG] QUERY OK db=17.4ms queue=41.0ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:01:06Z", "keys_config", 39029, ~N[2026-06-17 05:01:56], ~N[2026-06-17 05:01:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:56.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303317, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:01:06Z", message: "Current keys config version", status_log_id: 39029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:56], updated_at: ~N[2026-06-17 05:01:56]}} [2026-06-17 05:01:56.167] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:06Z", "value" => ""} [2026-06-17 05:01:56.229] [DEBUG] QUERY OK db=20.3ms queue=41.6ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:01:06Z", "application", 39029, ~N[2026-06-17 05:01:56], ~N[2026-06-17 05:01:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:01:56.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303318, itemkey: "application", value: nil, timestamp: "2026-06-17T05:01:06Z", message: "Current application version", status_log_id: 39029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:01:56], updated_at: ~N[2026-06-17 05:01:56]}} [2026-06-17 05:01:56.230] [WARN ] Unexpected async result [2026-06-17 05:01:56.230] [WARN ] Unexpected async result [2026-06-17 05:01:56.232] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=38.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:01:56.243] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:02:07.515] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:02:07.516] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:01:17Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:01:17Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:01:17Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:01:17Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:01:17Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:01:17Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:01:17Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:01:17Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:01:17Z","vendor":"MoreFun"} [2026-06-17 05:02:07.516] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:17Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:17Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:17Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:17Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:17Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:17Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:17Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:17Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:01:17Z", "vendor" => "MoreFun"} [2026-06-17 05:02:07.516] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:02:07.516] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:02:07.516] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:02:07.517] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=895.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:02:07.518] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=387.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:02:07.518] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=0.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-06-17 05:02:07.520] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.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-06-17 05:02:07.521] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=1.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:02:07.561] [DEBUG] QUERY OK source="pos_merchant" db=39.6ms queue=0.1ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:02:07.563] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1943.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 ["372916040000000"] [2026-06-17 05:02:07.563] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:02:07.564] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=42.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:02:07.564] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:02:07.564] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:02:07.565] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:02:07.587] [DEBUG] QUERY OK db=20.4ms idle=2.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "115d5ac5cb90fadaa1f920a78816b5270fd70ca4c08648bd228c3814fbe70490", 69, 937, ~U[2026-06-17 05:02:07Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:02:07.587] [INFO ] AutoPushService: Created push log 29595 for MF919 params.zip [2026-06-17 05:02:07.587] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 69, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:02:07.587] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:07.587] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:02:07.589] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=23.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-06-17 05:02:07.591] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:02:07.620] [DEBUG] QUERY OK db=27.3ms queue=0.5ms idle=5.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8d250c2fe94ab639b86cdbccaf173a7df7868100c73a64844fe0e09321df26f1", 6082, 17947, ~U[2026-06-17 05:02:07Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:02:07.620] [INFO ] AutoPushService: Created push log 29596 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:02:07.620] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6082, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:02:07.621] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:07.621] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:02:07.622] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=32.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-06-17 05:02:07.623] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:02:07.624] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.3ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:02:07.624] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:02:07.626] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:02:07.626] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:07.626] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:07.628] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms 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-06-17 05:02:07.629] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:02:07.629] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:02:07.630] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:02:07.631] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:02:07.655] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:02:07], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:02:07.657] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=25.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-06-17 05:02:07.657] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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-06-17 05:02:07.658] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:02:07.658] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:02:07.683] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:02:07], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:02:07.700] [DEBUG] QUERY OK db=16.6ms idle=24.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:01:17Z", ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:02:07.700] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39030, oid: "organization_id", upload_time: "2026-06-17T05:01:17Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]} [2026-06-17 05:02:07.700] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:17Z", "value" => "online"} [2026-06-17 05:02:07.722] [DEBUG] QUERY OK db=21.0ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:01:17Z", "online", "status", 39030, ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:07.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303319, itemkey: "status", value: "online", timestamp: "2026-06-17T05:01:17Z", message: "Terminal status update", status_log_id: 39030, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]}} [2026-06-17 05:02:07.722] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:02:07.722] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:07.722] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:17Z", "value" => "57"} [2026-06-17 05:02:07.746] [DEBUG] QUERY OK db=22.9ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:01:17Z", "57", "battery", 39030, ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:07.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303320, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:01:17Z", message: "Battery level", status_log_id: 39030, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]}} [2026-06-17 05:02:07.747] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:17Z", "value" => "online"} [2026-06-17 05:02:07.773] [DEBUG] QUERY OK db=25.7ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:01:17Z", "online", "network", 39030, ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:07.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303321, itemkey: "network", value: "online", timestamp: "2026-06-17T05:01:17Z", message: "Network connectivity", status_log_id: 39030, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]}} [2026-06-17 05:02:07.773] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:02:07.774] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:07.773] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:17Z", "value" => "0"} [2026-06-17 05:02:07.792] [DEBUG] QUERY OK db=16.3ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:01:17Z", "0", "cpu", 39030, ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:07.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303322, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:01:17Z", message: "CPU usage percentage", status_log_id: 39030, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]}} [2026-06-17 05:02:07.793] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:17Z", "value" => "1.0.0"} [2026-06-17 05:02:07.813] [DEBUG] QUERY OK db=18.6ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:01:17Z", "1.0.0", "parameter_config", 39030, ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:07.813] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303323, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:01:17Z", message: "Current parameters version", status_log_id: 39030, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]}} [2026-06-17 05:02:07.813] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:17Z", "value" => "1.0.1"} [2026-06-17 05:02:07.838] [DEBUG] QUERY OK db=24.0ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:01:17Z", "1.0.1", "emv_config", 39030, ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:07.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303324, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:01:17Z", message: "Current EMV config version", status_log_id: 39030, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]}} [2026-06-17 05:02:07.839] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:17Z", "value" => ""} [2026-06-17 05:02:07.877] [DEBUG] QUERY OK db=37.5ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:01:17Z", "keys_config", 39030, ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:07.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303325, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:01:17Z", message: "Current keys config version", status_log_id: 39030, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]}} [2026-06-17 05:02:07.877] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:17Z", "value" => ""} [2026-06-17 05:02:07.889] [DEBUG] QUERY OK db=11.6ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:01:17Z", "application", 39030, ~N[2026-06-17 05:02:07], ~N[2026-06-17 05:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:07.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303326, itemkey: "application", value: nil, timestamp: "2026-06-17T05:01:17Z", message: "Current application version", status_log_id: 39030, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:07], updated_at: ~N[2026-06-17 05:02:07]}} [2026-06-17 05:02:07.890] [WARN ] Unexpected async result [2026-06-17 05:02:07.890] [WARN ] Unexpected async result [2026-06-17 05:02:07.891] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=13.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:02:07.895] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:02:28.249] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:02:28.249] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:01:38Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:01:38Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:01:38Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:01:38Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:01:38Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:01:38Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:01:38Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:01:38Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:01:38Z","vendor":"MoreFun"} [2026-06-17 05:02:28.249] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:38Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:38Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:38Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:38Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:38Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:38Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:38Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:38Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:01:38Z", "vendor" => "MoreFun"} [2026-06-17 05:02:28.249] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:02:28.250] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:02:28.250] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:02:28.251] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1071.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-06-17 05:02:28.251] [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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:02:28.252] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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-06-17 05:02:28.254] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.6ms idle=1.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-06-17 05:02:28.255] [DEBUG] QUERY OK source="pos_terminal" db=0.2ms idle=2.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:02:28.295] [DEBUG] QUERY OK source="pos_merchant" db=40.2ms queue=0.1ms idle=0.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:02:28.297] [DEBUG] QUERY OK db=0.5ms queue=0.4ms idle=1673.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 ["372916040000000"] [2026-06-17 05:02:28.297] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:02:28.297] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:02:28.298] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:02:28.298] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:02:28.299] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:02:28.322] [DEBUG] QUERY OK db=22.4ms idle=2.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "75289af1999d2c42a7813f517d634a2d6830f3e85c477a3930fc6796e85bce08", 6210, 937, ~U[2026-06-17 05:02:28Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:02:28.323] [INFO ] AutoPushService: Created push log 29597 for MF919 params.zip [2026-06-17 05:02:28.323] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 6210, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:02:28.323] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:28.323] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:02:28.324] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.3ms idle=25.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-06-17 05:02:28.327] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:02:28.355] [DEBUG] QUERY OK db=27.1ms idle=5.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a1257b0b965e9681b1a32cf54aae0426917176161b298bde0c902745dd4c986d", 6274, 17947, ~U[2026-06-17 05:02:28Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:02:28.355] [INFO ] AutoPushService: Created push log 29598 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:02:28.355] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6274, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:02:28.355] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:28.355] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:02:28.356] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=31.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-06-17 05:02:28.356] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:02:28.357] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:02:28.357] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:02:28.358] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:02:28.358] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:28.359] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:28.359] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.1ms 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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 05:02:28.360] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:02:28.360] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:02:28.361] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:02:28.361] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:02:28.391] [DEBUG] QUERY OK source="tms_terminals" db=28.4ms queue=0.8ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:02:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:02:28.391] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=30.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-06-17 05:02:28.392] [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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:02:28.392] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:02:28.393] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:02:28.408] [DEBUG] QUERY OK source="tms_terminals" db=14.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:02:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:02:28.421] [DEBUG] QUERY OK db=13.0ms idle=15.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:01:38Z", ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:02:28.421] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39031, oid: "organization_id", upload_time: "2026-06-17T05:01:38Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]} [2026-06-17 05:02:28.422] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:38Z", "value" => "online"} [2026-06-17 05:02:28.437] [DEBUG] QUERY OK db=15.0ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:01:38Z", "online", "status", 39031, ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:28.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303327, itemkey: "status", value: "online", timestamp: "2026-06-17T05:01:38Z", message: "Terminal status update", status_log_id: 39031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]}} [2026-06-17 05:02:28.438] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:02:28.438] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:28.438] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:38Z", "value" => "57"} [2026-06-17 05:02:28.475] [DEBUG] QUERY OK db=35.4ms queue=0.1ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:01:38Z", "57", "battery", 39031, ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:28.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303328, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:01:38Z", message: "Battery level", status_log_id: 39031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]}} [2026-06-17 05:02:28.475] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:38Z", "value" => "online"} [2026-06-17 05:02:28.514] [DEBUG] QUERY OK db=37.4ms queue=0.7ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:01:38Z", "online", "network", 39031, ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:28.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303329, itemkey: "network", value: "online", timestamp: "2026-06-17T05:01:38Z", message: "Network connectivity", status_log_id: 39031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]}} [2026-06-17 05:02:28.514] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:02:28.515] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:28.515] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:38Z", "value" => "0"} [2026-06-17 05:02:28.540] [DEBUG] QUERY OK db=21.3ms queue=3.8ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:01:38Z", "0", "cpu", 39031, ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:28.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303330, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:01:38Z", message: "CPU usage percentage", status_log_id: 39031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]}} [2026-06-17 05:02:28.541] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:38Z", "value" => "1.0.0"} [2026-06-17 05:02:28.572] [DEBUG] QUERY OK db=28.7ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:01:38Z", "1.0.0", "parameter_config", 39031, ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:28.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303331, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:01:38Z", message: "Current parameters version", status_log_id: 39031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]}} [2026-06-17 05:02:28.572] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:38Z", "value" => "1.0.1"} [2026-06-17 05:02:28.608] [DEBUG] QUERY OK db=35.6ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:01:38Z", "1.0.1", "emv_config", 39031, ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:28.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303332, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:01:38Z", message: "Current EMV config version", status_log_id: 39031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]}} [2026-06-17 05:02:28.609] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:38Z", "value" => ""} [2026-06-17 05:02:28.639] [DEBUG] QUERY OK db=30.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:01:38Z", "keys_config", 39031, ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:28.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303333, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:01:38Z", message: "Current keys config version", status_log_id: 39031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]}} [2026-06-17 05:02:28.640] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:38Z", "value" => ""} [2026-06-17 05:02:28.659] [DEBUG] QUERY OK db=18.8ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:01:38Z", "application", 39031, ~N[2026-06-17 05:02:28], ~N[2026-06-17 05:02:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:28.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303334, itemkey: "application", value: nil, timestamp: "2026-06-17T05:01:38Z", message: "Current application version", status_log_id: 39031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:28], updated_at: ~N[2026-06-17 05:02:28]}} [2026-06-17 05:02:28.661] [WARN ] Unexpected async result [2026-06-17 05:02:28.661] [WARN ] Unexpected async result [2026-06-17 05:02:28.665] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms queue=0.4ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:02:28.675] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:02:34.215] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:02:34.215] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:01:44Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:01:44Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:01:44Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:01:44Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:01:44Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:01:44Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:01:44Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:01:44Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:01:44Z","vendor":"MoreFun"} [2026-06-17 05:02:34.216] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:44Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:44Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:44Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:44Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:44Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:44Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:44Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:44Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:01:44Z", "vendor" => "MoreFun"} [2026-06-17 05:02:34.216] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:02:34.216] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:02:34.216] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:02:34.217] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1022.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:02:34.217] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:02:34.218] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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-06-17 05:02:34.220] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.5ms idle=1.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-06-17 05:02:34.221] [DEBUG] QUERY OK source="pos_terminal" db=0.2ms idle=2.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:02:34.261] [DEBUG] QUERY OK source="pos_merchant" db=39.5ms idle=1.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:02:34.263] [DEBUG] QUERY OK db=0.6ms queue=1.6ms idle=636.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 ["372916040000000"] [2026-06-17 05:02:34.263] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:02:34.264] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:02:34.265] [DEBUG] QUERY OK source="address" db=0.8ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:02:34.265] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:02:34.268] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:02:34.285] [DEBUG] QUERY OK db=16.1ms idle=4.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4b9b9753100b81c9a6e64cb4be1a3344a1dc9c1d100fce8cda73ec1dcfee5aa2", 1795, 937, ~U[2026-06-17 05:02:34Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:02:34.285] [INFO ] AutoPushService: Created push log 29599 for MF919 params.zip [2026-06-17 05:02:34.285] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1795, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:02:34.285] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:34.286] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:02:34.287] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms idle=20.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-06-17 05:02:34.293] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:02:34.319] [DEBUG] QUERY OK db=25.1ms idle=8.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d765fbd6b41c325184f4046d2e443ea9350f3d3530b90518d128458342cd4ef3", 1859, 17947, ~U[2026-06-17 05:02:34Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:02:34.319] [INFO ] AutoPushService: Created push log 29600 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:02:34.319] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1859, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:02:34.319] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:34.319] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:02:34.321] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-06-17 05:02:34.321] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:02:34.322] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:02:34.323] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:02:34.326] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:02:34.326] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:34.327] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:34.328] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=6.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-06-17 05:02:34.329] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:02:34.329] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:02:34.330] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:02:34.330] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:02:34.353] [DEBUG] QUERY OK source="tms_terminals" db=22.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:02:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:02:34.354] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=23.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-06-17 05:02:34.355] [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", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:02:34.355] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:02:34.356] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:02:34.373] [DEBUG] QUERY OK source="tms_terminals" db=16.8ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:02:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:02:34.394] [DEBUG] QUERY OK db=20.2ms idle=17.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:01:44Z", ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:02:34.394] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39032, oid: "organization_id", upload_time: "2026-06-17T05:01:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]} [2026-06-17 05:02:34.394] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:44Z", "value" => "online"} [2026-06-17 05:02:34.428] [DEBUG] QUERY OK db=32.7ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:01:44Z", "online", "status", 39032, ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:34.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303335, itemkey: "status", value: "online", timestamp: "2026-06-17T05:01:44Z", message: "Terminal status update", status_log_id: 39032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]}} [2026-06-17 05:02:34.428] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:02:34.429] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:44Z", "value" => "57"} [2026-06-17 05:02:34.429] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:34.450] [DEBUG] QUERY OK db=20.6ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:01:44Z", "57", "battery", 39032, ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:34.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303336, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:01:44Z", message: "Battery level", status_log_id: 39032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]}} [2026-06-17 05:02:34.450] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:44Z", "value" => "online"} [2026-06-17 05:02:34.464] [DEBUG] QUERY OK db=13.0ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:01:44Z", "online", "network", 39032, ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:34.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303337, itemkey: "network", value: "online", timestamp: "2026-06-17T05:01:44Z", message: "Network connectivity", status_log_id: 39032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]}} [2026-06-17 05:02:34.464] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:02:34.465] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:44Z", "value" => "0"} [2026-06-17 05:02:34.465] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:34.492] [DEBUG] QUERY OK db=27.1ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:01:44Z", "0", "cpu", 39032, ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:34.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303338, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:01:44Z", message: "CPU usage percentage", status_log_id: 39032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]}} [2026-06-17 05:02:34.493] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:44Z", "value" => "1.0.0"} [2026-06-17 05:02:34.535] [DEBUG] QUERY OK db=41.7ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:01:44Z", "1.0.0", "parameter_config", 39032, ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:34.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303339, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:01:44Z", message: "Current parameters version", status_log_id: 39032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]}} [2026-06-17 05:02:34.536] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:44Z", "value" => "1.0.1"} [2026-06-17 05:02:34.549] [DEBUG] QUERY OK db=13.2ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:01:44Z", "1.0.1", "emv_config", 39032, ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:34.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303340, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:01:44Z", message: "Current EMV config version", status_log_id: 39032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]}} [2026-06-17 05:02:34.550] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:44Z", "value" => ""} [2026-06-17 05:02:34.564] [DEBUG] QUERY OK db=13.8ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:01:44Z", "keys_config", 39032, ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:34.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303341, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:01:44Z", message: "Current keys config version", status_log_id: 39032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]}} [2026-06-17 05:02:34.565] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:44Z", "value" => ""} [2026-06-17 05:02:34.584] [DEBUG] QUERY OK db=17.6ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:01:44Z", "application", 39032, ~N[2026-06-17 05:02:34], ~N[2026-06-17 05:02:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:34.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303342, itemkey: "application", value: nil, timestamp: "2026-06-17T05:01:44Z", message: "Current application version", status_log_id: 39032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:34], updated_at: ~N[2026-06-17 05:02:34]}} [2026-06-17 05:02:34.585] [WARN ] Unexpected async result [2026-06-17 05:02:34.586] [WARN ] Unexpected async result [2026-06-17 05:02:34.587] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=21.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:02:34.592] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:02:49.145] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:02:49.145] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:01:59Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:01:59Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:01:59Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:01:59Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:01:59Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:01:59Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:01:59Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:01:59Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:01:59Z","vendor":"MoreFun"} [2026-06-17 05:02:49.147] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:59Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:59Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:59Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:59Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:59Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:59Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:59Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:59Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:01:59Z", "vendor" => "MoreFun"} [2026-06-17 05:02:49.147] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:02:49.147] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:02:49.147] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:02:49.148] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=913.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-06-17 05:02:49.150] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=523.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:02:49.151] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=1.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-06-17 05:02:49.154] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=1.2ms 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-06-17 05:02:49.155] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=3.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:02:49.196] [DEBUG] QUERY OK source="pos_merchant" db=40.0ms idle=1.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:02:49.197] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=1571.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 ["372916040000000"] [2026-06-17 05:02:49.197] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:02:49.198] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:02:49.199] [DEBUG] QUERY OK source="address" db=0.2ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:02:49.199] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:02:49.200] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:02:49.225] [DEBUG] QUERY OK db=24.8ms idle=1.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "0e838b9d4774c885d200c60c97325827ca4c5aa36a2c5ede5c3a00653545729b", 6402, 937, ~U[2026-06-17 05:02:49Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:02:49.226] [INFO ] AutoPushService: Created push log 29601 for MF919 params.zip [2026-06-17 05:02:49.226] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 6402, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:02:49.226] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:49.226] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:02:49.227] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=27.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.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 05:02:49.230] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:02:49.247] [DEBUG] QUERY OK db=16.1ms idle=5.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ecaef9f7c8ad605bcad43fe03a65a2d5c62754f5e5eac163cf6464f22d833912", 229, 17947, ~U[2026-06-17 05:02:49Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:02:49.248] [INFO ] AutoPushService: Created push log 29602 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:02:49.248] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 229, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:02:49.248] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:49.248] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:02:49.250] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=11.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-06-17 05:02:49.250] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:02:49.251] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:02:49.252] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:02:49.253] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:02:49.254] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:49.254] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:49.255] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=4.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-06-17 05:02:49.255] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:02:49.255] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:02:49.256] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:02:49.256] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:02:49.285] [DEBUG] QUERY OK source="tms_terminals" db=29.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:02:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:02:49.286] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=30.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-06-17 05:02:49.287] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.2ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:02:49.287] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:02:49.288] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:02:49.312] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:02:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:02:49.334] [DEBUG] QUERY OK db=21.6ms idle=24.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:01:59Z", ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:02:49.335] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39033, oid: "organization_id", upload_time: "2026-06-17T05:01:59Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]} [2026-06-17 05:02:49.335] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:01:59Z", "value" => "online"} [2026-06-17 05:02:49.349] [DEBUG] QUERY OK db=13.1ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:01:59Z", "online", "status", 39033, ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:49.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303343, itemkey: "status", value: "online", timestamp: "2026-06-17T05:01:59Z", message: "Terminal status update", status_log_id: 39033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]}} [2026-06-17 05:02:49.349] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:02:49.349] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:01:59Z", "value" => "57"} [2026-06-17 05:02:49.350] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:49.364] [DEBUG] QUERY OK db=13.6ms queue=0.3ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:01:59Z", "57", "battery", 39033, ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:49.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303344, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:01:59Z", message: "Battery level", status_log_id: 39033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]}} [2026-06-17 05:02:49.364] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:01:59Z", "value" => "online"} [2026-06-17 05:02:49.385] [DEBUG] QUERY OK db=20.3ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:01:59Z", "online", "network", 39033, ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:49.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303345, itemkey: "network", value: "online", timestamp: "2026-06-17T05:01:59Z", message: "Network connectivity", status_log_id: 39033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]}} [2026-06-17 05:02:49.385] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:02:49.386] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:01:59Z", "value" => "0"} [2026-06-17 05:02:49.386] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:49.421] [DEBUG] QUERY OK db=34.6ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:01:59Z", "0", "cpu", 39033, ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:49.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303346, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:01:59Z", message: "CPU usage percentage", status_log_id: 39033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]}} [2026-06-17 05:02:49.421] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:01:59Z", "value" => "1.0.0"} [2026-06-17 05:02:49.445] [DEBUG] QUERY OK db=23.3ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:01:59Z", "1.0.0", "parameter_config", 39033, ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:49.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303347, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:01:59Z", message: "Current parameters version", status_log_id: 39033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]}} [2026-06-17 05:02:49.445] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:01:59Z", "value" => "1.0.1"} [2026-06-17 05:02:49.460] [DEBUG] QUERY OK db=14.0ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:01:59Z", "1.0.1", "emv_config", 39033, ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:49.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303348, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:01:59Z", message: "Current EMV config version", status_log_id: 39033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]}} [2026-06-17 05:02:49.460] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:01:59Z", "value" => ""} [2026-06-17 05:02:49.474] [DEBUG] QUERY OK db=13.4ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:01:59Z", "keys_config", 39033, ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:49.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303349, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:01:59Z", message: "Current keys config version", status_log_id: 39033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]}} [2026-06-17 05:02:49.474] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:01:59Z", "value" => ""} [2026-06-17 05:02:49.498] [DEBUG] QUERY OK db=22.8ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:01:59Z", "application", 39033, ~N[2026-06-17 05:02:49], ~N[2026-06-17 05:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:49.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303350, itemkey: "application", value: nil, timestamp: "2026-06-17T05:01:59Z", message: "Current application version", status_log_id: 39033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:49], updated_at: ~N[2026-06-17 05:02:49]}} [2026-06-17 05:02:49.498] [WARN ] Unexpected async result [2026-06-17 05:02:49.498] [WARN ] Unexpected async result [2026-06-17 05:02:49.499] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.2ms idle=24.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:02:49.503] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:02:57.535] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:02:57.535] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:02:07Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:02:07Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:02:07Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:02:07Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:02:07Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:02:07Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:02:07Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:02:07Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:02:07Z","vendor":"MoreFun"} [2026-06-17 05:02:57.535] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:07Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:07Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:07Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:07Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:07Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:07Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:07Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:07Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:02:07Z", "vendor" => "MoreFun"} [2026-06-17 05:02:57.535] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:02:57.536] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:02:57.536] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:02:57.537] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1279.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-06-17 05:02:57.538] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms idle=278.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:02:57.539] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms 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-06-17 05:02:57.540] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.4ms idle=1.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-06-17 05:02:57.541] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=1.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:02:57.581] [DEBUG] QUERY OK source="pos_merchant" db=39.8ms idle=1.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:02:57.583] [DEBUG] QUERY OK db=0.5ms queue=0.6ms idle=1957.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 ["372916040000000"] [2026-06-17 05:02:57.583] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:02:57.584] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:02:57.585] [DEBUG] QUERY OK source="address" db=0.2ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:02:57.585] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:02:57.586] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:02:57.610] [DEBUG] QUERY OK db=23.8ms idle=2.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8298c8395b50a8a5baf0448f3614eba5add2729884d06517298e914846ad20a1", 2115, 936, ~U[2026-06-17 05:02:57Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:02:57.611] [INFO ] AutoPushService: Created push log 29603 for MF919 params.zip [2026-06-17 05:02:57.611] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2115, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:02:57.611] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:57.611] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:02:57.613] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=26.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-06-17 05:02:57.620] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:02:57.645] [DEBUG] QUERY OK db=24.5ms idle=10.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e3519e067171239250bc167ce05746e6b09b00c2055acfcc9a30b247e2670bfc", 2179, 17947, ~U[2026-06-17 05:02:57Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:02:57.645] [INFO ] AutoPushService: Created push log 29604 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:02:57.645] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2179, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:02:57.646] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:02:57.646] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:02:57.647] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=33.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-06-17 05:02:57.647] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:02:57.649] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=1.2ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:02:57.649] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:02:57.652] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:02:57.652] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:57.652] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:02:57.653] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=5.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-06-17 05:02:57.653] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:02:57.653] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:02:57.655] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.1ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:02:57.655] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:02:57.687] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms queue=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:02:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:02:57.688] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=32.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` = ?)) 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-06-17 05:02:57.689] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:02:57.690] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:02:57.691] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:02:57.714] [DEBUG] QUERY OK source="tms_terminals" db=22.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:02:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:02:57.737] [DEBUG] QUERY OK db=22.8ms idle=23.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:02:07Z", ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:02:57.737] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39034, oid: "organization_id", upload_time: "2026-06-17T05:02:07Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]} [2026-06-17 05:02:57.737] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:07Z", "value" => "online"} [2026-06-17 05:02:57.763] [DEBUG] QUERY OK db=24.8ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:02:07Z", "online", "status", 39034, ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:57.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303351, itemkey: "status", value: "online", timestamp: "2026-06-17T05:02:07Z", message: "Terminal status update", status_log_id: 39034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]}} [2026-06-17 05:02:57.763] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:02:57.763] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:07Z", "value" => "57"} [2026-06-17 05:02:57.764] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:57.794] [DEBUG] QUERY OK db=28.7ms queue=0.1ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:02:07Z", "57", "battery", 39034, ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:57.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303352, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:02:07Z", message: "Battery level", status_log_id: 39034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]}} [2026-06-17 05:02:57.795] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:07Z", "value" => "online"} [2026-06-17 05:02:57.826] [DEBUG] QUERY OK db=30.4ms queue=0.1ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:02:07Z", "online", "network", 39034, ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:57.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303353, itemkey: "network", value: "online", timestamp: "2026-06-17T05:02:07Z", message: "Network connectivity", status_log_id: 39034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]}} [2026-06-17 05:02:57.827] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:02:57.827] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:02:57.827] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:07Z", "value" => "0"} [2026-06-17 05:02:57.853] [DEBUG] QUERY OK db=23.2ms queue=0.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:02:07Z", "0", "cpu", 39034, ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:57.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303354, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:02:07Z", message: "CPU usage percentage", status_log_id: 39034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]}} [2026-06-17 05:02:57.853] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:07Z", "value" => "1.0.0"} [2026-06-17 05:02:57.885] [DEBUG] QUERY OK db=31.2ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:02:07Z", "1.0.0", "parameter_config", 39034, ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:57.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303355, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:02:07Z", message: "Current parameters version", status_log_id: 39034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]}} [2026-06-17 05:02:57.885] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:07Z", "value" => "1.0.1"} [2026-06-17 05:02:57.914] [DEBUG] QUERY OK db=27.9ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:02:07Z", "1.0.1", "emv_config", 39034, ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:57.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303356, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:02:07Z", message: "Current EMV config version", status_log_id: 39034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]}} [2026-06-17 05:02:57.914] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:07Z", "value" => ""} [2026-06-17 05:02:57.948] [DEBUG] QUERY OK db=33.2ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:02:07Z", "keys_config", 39034, ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:57.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303357, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:02:07Z", message: "Current keys config version", status_log_id: 39034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]}} [2026-06-17 05:02:57.948] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:07Z", "value" => ""} [2026-06-17 05:02:57.982] [DEBUG] QUERY OK db=33.4ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:02:07Z", "application", 39034, ~N[2026-06-17 05:02:57], ~N[2026-06-17 05:02:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:02:57.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303358, itemkey: "application", value: nil, timestamp: "2026-06-17T05:02:07Z", message: "Current application version", status_log_id: 39034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:02:57], updated_at: ~N[2026-06-17 05:02:57]}} [2026-06-17 05:02:57.982] [WARN ] Unexpected async result [2026-06-17 05:02:57.982] [WARN ] Unexpected async result [2026-06-17 05:02:57.984] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.2ms idle=34.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:02:57.988] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:03:05.038] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:03:05.038] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:02:15Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:02:15Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:02:15Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:02:15Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:02:15Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:02:15Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:02:15Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:02:15Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:02:15Z","vendor":"MoreFun"} [2026-06-17 05:03:05.038] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:15Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:15Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:15Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:15Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:15Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:15Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:15Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:15Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:02:15Z", "vendor" => "MoreFun"} [2026-06-17 05:03:05.038] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:03:05.038] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:03:05.038] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:03:05.040] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=745.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-06-17 05:03:05.042] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.3ms idle=407.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:03:05.043] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms queue=0.1ms 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-06-17 05:03:05.046] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=1.9ms idle=1.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-06-17 05:03:05.048] [DEBUG] QUERY OK source="pos_terminal" db=1.6ms idle=3.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:03:05.088] [DEBUG] QUERY OK source="pos_merchant" db=39.1ms idle=2.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:03:05.089] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=454.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 ["372916040000000"] [2026-06-17 05:03:05.089] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:03:05.090] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:03:05.091] [DEBUG] QUERY OK source="address" db=0.5ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:03:05.091] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:03:05.094] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:03:05.133] [DEBUG] QUERY OK db=37.1ms idle=4.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "363602b85577eeae8b6fda3ac36782a15fadde0dae281bf839219ad17e3ae912", 2243, 937, ~U[2026-06-17 05:03:05Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:03:05.134] [INFO ] AutoPushService: Created push log 29605 for MF919 params.zip [2026-06-17 05:03:05.134] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2243, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:03:05.134] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:05.135] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:03:05.136] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=43.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-06-17 05:03:05.139] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:03:05.161] [DEBUG] QUERY OK db=20.9ms idle=7.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3bce68b49ee0373e862a99011fd11949c0cd4018d82a4825dc7c164939beb7b1", 6530, 17947, ~U[2026-06-17 05:03:05Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:03:05.161] [INFO ] AutoPushService: Created push log 29606 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:03:05.162] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6530, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:03:05.162] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:05.163] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:03:05.164] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=27.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-06-17 05:03:05.164] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:03:05.166] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=3.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:03:05.166] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:03:05.167] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:03:05.167] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:05.167] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:05.169] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=0.1ms 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-06-17 05:03:05.169] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:03:05.170] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:03:05.171] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:03:05.171] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:03:05.185] [DEBUG] QUERY OK source="tms_terminals" db=13.8ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:03:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:03:05.186] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=14.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-06-17 05:03:05.188] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.5ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:03:05.188] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:03:05.189] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:03:05.225] [DEBUG] QUERY OK source="tms_terminals" db=35.3ms queue=0.2ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:03:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:03:05.246] [DEBUG] QUERY OK db=20.1ms idle=36.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:02:15Z", ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:03:05.246] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39035, oid: "organization_id", upload_time: "2026-06-17T05:02:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]} [2026-06-17 05:03:05.246] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:15Z", "value" => "online"} [2026-06-17 05:03:05.269] [DEBUG] QUERY OK db=22.2ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:02:15Z", "online", "status", 39035, ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:05.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303359, itemkey: "status", value: "online", timestamp: "2026-06-17T05:02:15Z", message: "Terminal status update", status_log_id: 39035, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]}} [2026-06-17 05:03:05.270] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:03:05.270] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:15Z", "value" => "57"} [2026-06-17 05:03:05.270] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:05.300] [DEBUG] QUERY OK db=29.2ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:02:15Z", "57", "battery", 39035, ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:05.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303360, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:02:15Z", message: "Battery level", status_log_id: 39035, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]}} [2026-06-17 05:03:05.300] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:15Z", "value" => "online"} [2026-06-17 05:03:05.324] [DEBUG] QUERY OK db=23.3ms idle=3.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:02:15Z", "online", "network", 39035, ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:05.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303361, itemkey: "network", value: "online", timestamp: "2026-06-17T05:02:15Z", message: "Network connectivity", status_log_id: 39035, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]}} [2026-06-17 05:03:05.325] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:03:05.325] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:05.325] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:15Z", "value" => "0"} [2026-06-17 05:03:05.346] [DEBUG] QUERY OK db=20.6ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:02:15Z", "0", "cpu", 39035, ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:05.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303362, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:02:15Z", message: "CPU usage percentage", status_log_id: 39035, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]}} [2026-06-17 05:03:05.347] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:15Z", "value" => "1.0.0"} [2026-06-17 05:03:05.361] [DEBUG] QUERY OK db=13.7ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:02:15Z", "1.0.0", "parameter_config", 39035, ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:05.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303363, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:02:15Z", message: "Current parameters version", status_log_id: 39035, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]}} [2026-06-17 05:03:05.362] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:15Z", "value" => "1.0.1"} [2026-06-17 05:03:05.375] [DEBUG] QUERY OK db=12.2ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:02:15Z", "1.0.1", "emv_config", 39035, ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:05.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303364, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:02:15Z", message: "Current EMV config version", status_log_id: 39035, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]}} [2026-06-17 05:03:05.376] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:15Z", "value" => ""} [2026-06-17 05:03:05.406] [DEBUG] QUERY OK db=28.7ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:02:15Z", "keys_config", 39035, ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:05.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303365, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:02:15Z", message: "Current keys config version", status_log_id: 39035, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]}} [2026-06-17 05:03:05.406] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:15Z", "value" => ""} [2026-06-17 05:03:05.439] [DEBUG] QUERY OK db=31.8ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:02:15Z", "application", 39035, ~N[2026-06-17 05:03:05], ~N[2026-06-17 05:03:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:05.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303366, itemkey: "application", value: nil, timestamp: "2026-06-17T05:02:15Z", message: "Current application version", status_log_id: 39035, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:05], updated_at: ~N[2026-06-17 05:03:05]}} [2026-06-17 05:03:05.439] [WARN ] Unexpected async result [2026-06-17 05:03:05.439] [WARN ] Unexpected async result [2026-06-17 05:03:05.440] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=33.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:03:05.445] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:03:13.377] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:03:13.377] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:02:23Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:02:23Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:02:23Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:02:23Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:02:23Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:02:23Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:02:23Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:02:23Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:02:23Z","vendor":"MoreFun"} [2026-06-17 05:03:13.377] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:23Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:23Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:23Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:23Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:23Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:23Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:23Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:23Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:02:23Z", "vendor" => "MoreFun"} [2026-06-17 05:03:13.378] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:03:13.378] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:03:13.378] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:03:13.379] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1063.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-06-17 05:03:13.380] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=62.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:03:13.381] [DEBUG] QUERY OK source="parameter_template_values" db=0.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-06-17 05:03:13.382] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.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-06-17 05:03:13.383] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=1.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:03:13.424] [DEBUG] QUERY OK source="pos_merchant" db=40.2ms idle=0.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:03:13.425] [DEBUG] QUERY OK db=0.5ms queue=0.8ms idle=792.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 ["372916040000000"] [2026-06-17 05:03:13.425] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:03:13.426] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:03:13.427] [DEBUG] QUERY OK source="address" db=0.6ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:03:13.427] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:03:13.429] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:03:13.445] [DEBUG] QUERY OK db=14.9ms queue=0.3ms idle=3.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "290e252ba0d55ce8657ab0207b613e95d793492e792ab4e940c557ab7a1f2a54", 2371, 938, ~U[2026-06-17 05:03:13Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:03:13.445] [INFO ] AutoPushService: Created push log 29607 for MF919 params.zip [2026-06-17 05:03:13.445] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2371, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:03:13.446] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:13.446] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:03:13.447] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=18.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-06-17 05:03:13.450] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:03:13.476] [DEBUG] QUERY OK db=24.6ms idle=6.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "42d8ffe9f697e11c97ff91ab7d5706f6f0d4350c5efbfc35cee93dc4fb0956be", 6658, 17947, ~U[2026-06-17 05:03:13Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:03:13.477] [INFO ] AutoPushService: Created push log 29608 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:03:13.477] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6658, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:03:13.477] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:13.478] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:03:13.479] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.2ms idle=31.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-06-17 05:03:13.479] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:03:13.480] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:03:13.480] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:03:13.482] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:03:13.482] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:13.482] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:13.483] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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-06-17 05:03:13.484] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:03:13.484] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:03:13.485] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:03:13.486] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:03:13.510] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:03:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:03:13.512] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=25.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-06-17 05:03:13.515] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=4.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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:03:13.515] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:03:13.517] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:03:13.543] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:03:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:03:13.558] [DEBUG] QUERY OK db=13.8ms idle=26.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:02:23Z", ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:03:13.558] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39036, oid: "organization_id", upload_time: "2026-06-17T05:02:23Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]} [2026-06-17 05:03:13.558] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:23Z", "value" => "online"} [2026-06-17 05:03:13.577] [DEBUG] QUERY OK db=18.7ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:02:23Z", "online", "status", 39036, ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:13.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303367, itemkey: "status", value: "online", timestamp: "2026-06-17T05:02:23Z", message: "Terminal status update", status_log_id: 39036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]}} [2026-06-17 05:03:13.578] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:03:13.578] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:13.578] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:23Z", "value" => "57"} [2026-06-17 05:03:13.610] [DEBUG] QUERY OK db=31.6ms queue=0.2ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:02:23Z", "57", "battery", 39036, ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:13.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303368, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:02:23Z", message: "Battery level", status_log_id: 39036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]}} [2026-06-17 05:03:13.611] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:23Z", "value" => "online"} [2026-06-17 05:03:13.635] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:02:23Z", "online", "network", 39036, ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:13.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303369, itemkey: "network", value: "online", timestamp: "2026-06-17T05:02:23Z", message: "Network connectivity", status_log_id: 39036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]}} [2026-06-17 05:03:13.635] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:03:13.637] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:23Z", "value" => "0"} [2026-06-17 05:03:13.637] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:13.662] [DEBUG] QUERY OK db=25.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:02:23Z", "0", "cpu", 39036, ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:13.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303370, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:02:23Z", message: "CPU usage percentage", status_log_id: 39036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]}} [2026-06-17 05:03:13.663] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:23Z", "value" => "1.0.0"} [2026-06-17 05:03:13.682] [DEBUG] QUERY OK db=16.8ms queue=0.2ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:02:23Z", "1.0.0", "parameter_config", 39036, ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:13.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303371, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:02:23Z", message: "Current parameters version", status_log_id: 39036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]}} [2026-06-17 05:03:13.682] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:23Z", "value" => "1.0.1"} [2026-06-17 05:03:13.714] [DEBUG] QUERY OK db=31.5ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:02:23Z", "1.0.1", "emv_config", 39036, ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:13.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303372, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:02:23Z", message: "Current EMV config version", status_log_id: 39036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]}} [2026-06-17 05:03:13.715] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:23Z", "value" => ""} [2026-06-17 05:03:13.738] [DEBUG] QUERY OK db=22.7ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:02:23Z", "keys_config", 39036, ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:13.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303373, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:02:23Z", message: "Current keys config version", status_log_id: 39036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]}} [2026-06-17 05:03:13.740] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:23Z", "value" => ""} [2026-06-17 05:03:13.769] [DEBUG] QUERY OK db=28.4ms queue=0.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:02:23Z", "application", 39036, ~N[2026-06-17 05:03:13], ~N[2026-06-17 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:13.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303374, itemkey: "application", value: nil, timestamp: "2026-06-17T05:02:23Z", message: "Current application version", status_log_id: 39036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:13], updated_at: ~N[2026-06-17 05:03:13]}} [2026-06-17 05:03:13.772] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:03:13.771] [WARN ] Unexpected async result [2026-06-17 05:03:13.776] [WARN ] Unexpected async result [2026-06-17 05:03:13.778] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:03:21.015] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:03:21.015] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:02:31Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:02:31Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:02:31Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:02:31Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:02:31Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:02:31Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:02:31Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:02:31Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:02:31Z","vendor":"MoreFun"} [2026-06-17 05:03:21.016] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:31Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:31Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:31Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:31Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:31Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:31Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:31Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:31Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:02:31Z", "vendor" => "MoreFun"} [2026-06-17 05:03:21.016] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:03:21.016] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:03:21.016] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:03:21.018] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=961.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-06-17 05:03:21.018] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=686.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:03:21.019] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms idle=0.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-06-17 05:03:21.021] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.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-06-17 05:03:21.021] [DEBUG] QUERY OK source="pos_terminal" db=0.2ms idle=1.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:03:21.062] [DEBUG] QUERY OK source="pos_merchant" db=39.8ms idle=0.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:03:21.063] [DEBUG] QUERY OK db=0.7ms queue=0.8ms idle=429.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 ["372916040000000"] [2026-06-17 05:03:21.063] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:03:21.065] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:03:21.066] [DEBUG] QUERY OK source="address" db=1.4ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:03:21.066] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:03:21.068] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:03:21.096] [DEBUG] QUERY OK db=27.8ms idle=3.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e0f0f64e422dcc6419de1dfe2a41a873a0f41928f65460056060a1b5d986aac3", 2499, 936, ~U[2026-06-17 05:03:21Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:03:21.097] [INFO ] AutoPushService: Created push log 29609 for MF919 params.zip [2026-06-17 05:03:21.097] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2499, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:03:21.097] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:21.097] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:03:21.098] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=30.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-06-17 05:03:21.101] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:03:21.133] [DEBUG] QUERY OK db=31.6ms idle=5.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "bce14fba137737807268b0b9ee90444cc907ad8d461d1b9349d92417fc2d2c87", 2563, 17947, ~U[2026-06-17 05:03:21Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:03:21.134] [INFO ] AutoPushService: Created push log 29610 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:03:21.134] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2563, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:03:21.134] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:21.134] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:03:21.136] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.3ms idle=36.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-06-17 05:03:21.136] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:03:21.139] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:03:21.139] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:03:21.141] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:03:21.141] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:21.141] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:21.142] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 05:03:21.142] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:03:21.142] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:03:21.143] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:03:21.144] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:03:21.172] [DEBUG] QUERY OK source="tms_terminals" db=27.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:03:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:03:21.173] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=28.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-06-17 05:03:21.174] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 05:03:21.175] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:03:21.175] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:03:21.205] [DEBUG] QUERY OK source="tms_terminals" db=28.8ms queue=0.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:03:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:03:21.219] [DEBUG] QUERY OK db=13.9ms idle=29.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:02:31Z", ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:03:21.219] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39037, oid: "organization_id", upload_time: "2026-06-17T05:02:31Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]} [2026-06-17 05:03:21.220] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:31Z", "value" => "online"} [2026-06-17 05:03:21.243] [DEBUG] QUERY OK db=22.6ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:02:31Z", "online", "status", 39037, ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:21.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303375, itemkey: "status", value: "online", timestamp: "2026-06-17T05:02:31Z", message: "Terminal status update", status_log_id: 39037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]}} [2026-06-17 05:03:21.243] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:03:21.243] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:31Z", "value" => "57"} [2026-06-17 05:03:21.243] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:21.286] [DEBUG] QUERY OK db=42.2ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:02:31Z", "57", "battery", 39037, ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:21.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303376, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:02:31Z", message: "Battery level", status_log_id: 39037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]}} [2026-06-17 05:03:21.287] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:31Z", "value" => "online"} [2026-06-17 05:03:21.312] [DEBUG] QUERY OK db=24.4ms queue=0.1ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:02:31Z", "online", "network", 39037, ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:21.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303377, itemkey: "network", value: "online", timestamp: "2026-06-17T05:02:31Z", message: "Network connectivity", status_log_id: 39037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]}} [2026-06-17 05:03:21.312] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:03:21.312] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:21.312] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:31Z", "value" => "0"} [2026-06-17 05:03:21.334] [DEBUG] QUERY OK db=21.0ms queue=0.5ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:02:31Z", "0", "cpu", 39037, ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:21.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303378, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:02:31Z", message: "CPU usage percentage", status_log_id: 39037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]}} [2026-06-17 05:03:21.335] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:31Z", "value" => "1.0.0"} [2026-06-17 05:03:21.358] [DEBUG] QUERY OK db=22.5ms idle=2.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:02:31Z", "1.0.0", "parameter_config", 39037, ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:21.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303379, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:02:31Z", message: "Current parameters version", status_log_id: 39037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]}} [2026-06-17 05:03:21.358] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:31Z", "value" => "1.0.1"} [2026-06-17 05:03:21.387] [DEBUG] QUERY OK db=27.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:02:31Z", "1.0.1", "emv_config", 39037, ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:21.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303380, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:02:31Z", message: "Current EMV config version", status_log_id: 39037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]}} [2026-06-17 05:03:21.388] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:31Z", "value" => ""} [2026-06-17 05:03:21.421] [DEBUG] QUERY OK db=32.6ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:02:31Z", "keys_config", 39037, ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:21.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303381, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:02:31Z", message: "Current keys config version", status_log_id: 39037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]}} [2026-06-17 05:03:21.421] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:31Z", "value" => ""} [2026-06-17 05:03:21.438] [DEBUG] QUERY OK db=16.6ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:02:31Z", "application", 39037, ~N[2026-06-17 05:03:21], ~N[2026-06-17 05:03:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:21.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303382, itemkey: "application", value: nil, timestamp: "2026-06-17T05:02:31Z", message: "Current application version", status_log_id: 39037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:21], updated_at: ~N[2026-06-17 05:03:21]}} [2026-06-17 05:03:21.439] [WARN ] Unexpected async result [2026-06-17 05:03:21.439] [WARN ] Unexpected async result [2026-06-17 05:03:21.440] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=18.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:03:21.448] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:03:38.069] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:03:38.069] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:02:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:02:48Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:02:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:02:48Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:02:48Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:02:48Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:02:48Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:02:48Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:02:48Z","vendor":"MoreFun"} [2026-06-17 05:03:38.069] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:48Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:48Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:48Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:48Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:48Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:48Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:02:48Z", "vendor" => "MoreFun"} [2026-06-17 05:03:38.070] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:03:38.070] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:03:38.071] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:03:38.072] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=684.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-06-17 05:03:38.073] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=439.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:03:38.073] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=0.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-06-17 05:03:38.075] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.9ms idle=1.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-06-17 05:03:38.076] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=2.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:03:38.116] [DEBUG] QUERY OK source="pos_merchant" db=39.6ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:03:38.118] [DEBUG] QUERY OK db=0.5ms queue=0.6ms idle=1482.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 ["372916040000000"] [2026-06-17 05:03:38.118] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:03:38.119] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:03:38.120] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.2ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:03:38.120] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:03:38.122] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:03:38.149] [DEBUG] QUERY OK db=26.4ms idle=3.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9e80f26566f39ab569aa7fe9cf856a7c97bcce9de55769a53459aaece7c25dfa", 2659, 936, ~U[2026-06-17 05:03:38Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:03:38.150] [INFO ] AutoPushService: Created push log 29611 for MF919 params.zip [2026-06-17 05:03:38.150] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2659, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:03:38.150] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:38.152] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:03:38.155] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=33.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-06-17 05:03:38.165] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:03:38.194] [DEBUG] QUERY OK db=27.6ms idle=17.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c669d89c9a4826e5a5493d96d669021aefda5139b81b23ea2cf5f70fcc155d44", 2723, 17947, ~U[2026-06-17 05:03:38Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:03:38.195] [INFO ] AutoPushService: Created push log 29612 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:03:38.195] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2723, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:03:38.195] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:38.195] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:03:38.202] [DEBUG] QUERY OK source="config_file_versions" db=5.7ms idle=40.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-06-17 05:03:38.202] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:03:38.203] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.2ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:03:38.203] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:03:38.207] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:03:38.207] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:38.207] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:38.211] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms 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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 05:03:38.211] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:03:38.211] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:03:38.213] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=8.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:03:38.213] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:03:38.233] [DEBUG] QUERY OK source="tms_terminals" db=19.5ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:03:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:03:38.235] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.4ms idle=20.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-06-17 05:03:38.236] [DEBUG] QUERY OK source="config_file_versions" db=0.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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:03:38.236] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:03:38.237] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:03:38.267] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms queue=0.1ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:03:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:03:38.316] [DEBUG] QUERY OK db=48.8ms idle=30.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:02:48Z", ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:03:38.317] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39038, oid: "organization_id", upload_time: "2026-06-17T05:02:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]} [2026-06-17 05:03:38.317] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:48Z", "value" => "online"} [2026-06-17 05:03:38.348] [DEBUG] QUERY OK db=29.7ms queue=1.5ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:02:48Z", "online", "status", 39038, ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:38.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303383, itemkey: "status", value: "online", timestamp: "2026-06-17T05:02:48Z", message: "Terminal status update", status_log_id: 39038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]}} [2026-06-17 05:03:38.349] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:03:38.349] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:38.352] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:48Z", "value" => "57"} [2026-06-17 05:03:38.393] [DEBUG] QUERY OK db=40.9ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:02:48Z", "57", "battery", 39038, ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:38.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303384, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:02:48Z", message: "Battery level", status_log_id: 39038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]}} [2026-06-17 05:03:38.395] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:48Z", "value" => "online"} [2026-06-17 05:03:38.435] [DEBUG] QUERY OK db=38.9ms idle=6.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:02:48Z", "online", "network", 39038, ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:38.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303385, itemkey: "network", value: "online", timestamp: "2026-06-17T05:02:48Z", message: "Network connectivity", status_log_id: 39038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]}} [2026-06-17 05:03:38.436] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:03:38.436] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:48Z", "value" => "0"} [2026-06-17 05:03:38.436] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:38.499] [DEBUG] QUERY OK db=61.3ms queue=1.8ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:02:48Z", "0", "cpu", 39038, ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:38.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303386, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:02:48Z", message: "CPU usage percentage", status_log_id: 39038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]}} [2026-06-17 05:03:38.500] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:48Z", "value" => "1.0.0"} [2026-06-17 05:03:38.538] [DEBUG] QUERY OK db=37.0ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:02:48Z", "1.0.0", "parameter_config", 39038, ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:38.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303387, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:02:48Z", message: "Current parameters version", status_log_id: 39038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]}} [2026-06-17 05:03:38.539] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:48Z", "value" => "1.0.1"} [2026-06-17 05:03:38.578] [DEBUG] QUERY OK db=38.4ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:02:48Z", "1.0.1", "emv_config", 39038, ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:38.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303388, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:02:48Z", message: "Current EMV config version", status_log_id: 39038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]}} [2026-06-17 05:03:38.580] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:48Z", "value" => ""} [2026-06-17 05:03:38.614] [DEBUG] QUERY OK db=33.6ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:02:48Z", "keys_config", 39038, ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:38.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303389, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:02:48Z", message: "Current keys config version", status_log_id: 39038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]}} [2026-06-17 05:03:38.614] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:48Z", "value" => ""} [2026-06-17 05:03:38.628] [DEBUG] QUERY OK db=13.7ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:02:48Z", "application", 39038, ~N[2026-06-17 05:03:38], ~N[2026-06-17 05:03:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:38.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303390, itemkey: "application", value: nil, timestamp: "2026-06-17T05:02:48Z", message: "Current application version", status_log_id: 39038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:38], updated_at: ~N[2026-06-17 05:03:38]}} [2026-06-17 05:03:38.629] [WARN ] Unexpected async result [2026-06-17 05:03:38.629] [WARN ] Unexpected async result [2026-06-17 05:03:38.635] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms queue=0.2ms idle=15.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:03:38.642] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:03:39.449] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:03:39.449] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:02:49Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:02:49Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:02:49Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:02:49Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:02:49Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:02:49Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:02:49Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:02:49Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:02:49Z","vendor":"MoreFun"} [2026-06-17 05:03:39.450] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:49Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:49Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:49Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:49Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:49Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:49Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:49Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:49Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:02:49Z", "vendor" => "MoreFun"} [2026-06-17 05:03:39.450] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:03:39.450] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:03:39.450] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:03:39.451] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=815.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:03:39.452] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=60.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:03:39.453] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=0.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-06-17 05:03:39.455] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.5ms idle=1.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-06-17 05:03:39.456] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=2.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:03:39.496] [DEBUG] QUERY OK source="pos_merchant" db=39.0ms queue=0.2ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:03:39.497] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=1378.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 ["372916040000000"] [2026-06-17 05:03:39.497] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:03:39.498] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:03:39.499] [DEBUG] QUERY OK source="address" db=0.4ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:03:39.499] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:03:39.501] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:03:39.527] [DEBUG] QUERY OK db=24.3ms idle=3.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6f27b4091f615497020928180da7089ad32ed7c137054f177979d14a70991eb4", 2787, 936, ~U[2026-06-17 05:03:39Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:03:39.527] [INFO ] AutoPushService: Created push log 29613 for MF919 params.zip [2026-06-17 05:03:39.527] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2787, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:03:39.527] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:39.528] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:03:39.530] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms queue=0.7ms idle=29.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-06-17 05:03:39.535] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:03:39.549] [DEBUG] QUERY OK db=11.6ms idle=10.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1a2ed944d8589147476f9c1a9b4634f89ab9ce04416202c405b593780535fca4", 6978, 17947, ~U[2026-06-17 05:03:39Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:03:39.549] [INFO ] AutoPushService: Created push log 29614 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:03:39.549] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6978, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:03:39.549] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:39.550] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:03:39.551] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=19.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-06-17 05:03:39.551] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:03:39.552] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:03:39.552] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:03:39.553] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:03:39.554] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:39.554] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:39.555] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=4.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-06-17 05:03:39.556] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:03:39.556] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:03:39.557] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:03:39.557] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:03:39.582] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:03:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:03:39.583] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=25.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` = ?)) 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-06-17 05:03:39.584] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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-06-17 05:03:39.584] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:03:39.586] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:03:39.615] [DEBUG] QUERY OK source="tms_terminals" db=29.2ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:03:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:03:39.639] [DEBUG] QUERY OK db=23.3ms idle=29.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:02:49Z", ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:03:39.639] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39039, oid: "organization_id", upload_time: "2026-06-17T05:02:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]} [2026-06-17 05:03:39.639] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:02:49Z", "value" => "online"} [2026-06-17 05:03:39.666] [DEBUG] QUERY OK db=25.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:02:49Z", "online", "status", 39039, ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:39.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303391, itemkey: "status", value: "online", timestamp: "2026-06-17T05:02:49Z", message: "Terminal status update", status_log_id: 39039, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]}} [2026-06-17 05:03:39.666] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:03:39.666] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:02:49Z", "value" => "57"} [2026-06-17 05:03:39.667] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:39.688] [DEBUG] QUERY OK db=21.9ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:02:49Z", "57", "battery", 39039, ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:39.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303392, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:02:49Z", message: "Battery level", status_log_id: 39039, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]}} [2026-06-17 05:03:39.689] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:02:49Z", "value" => "online"} [2026-06-17 05:03:39.714] [DEBUG] QUERY OK db=23.9ms queue=0.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:02:49Z", "online", "network", 39039, ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:39.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303393, itemkey: "network", value: "online", timestamp: "2026-06-17T05:02:49Z", message: "Network connectivity", status_log_id: 39039, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]}} [2026-06-17 05:03:39.715] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:03:39.715] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:02:49Z", "value" => "0"} [2026-06-17 05:03:39.715] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:39.746] [DEBUG] QUERY OK db=29.9ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:02:49Z", "0", "cpu", 39039, ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:39.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303394, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:02:49Z", message: "CPU usage percentage", status_log_id: 39039, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]}} [2026-06-17 05:03:39.746] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:02:49Z", "value" => "1.0.0"} [2026-06-17 05:03:39.778] [DEBUG] QUERY OK db=30.4ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:02:49Z", "1.0.0", "parameter_config", 39039, ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:39.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303395, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:02:49Z", message: "Current parameters version", status_log_id: 39039, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]}} [2026-06-17 05:03:39.778] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:02:49Z", "value" => "1.0.1"} [2026-06-17 05:03:39.791] [DEBUG] QUERY OK db=12.5ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:02:49Z", "1.0.1", "emv_config", 39039, ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:39.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303396, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:02:49Z", message: "Current EMV config version", status_log_id: 39039, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]}} [2026-06-17 05:03:39.792] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:02:49Z", "value" => ""} [2026-06-17 05:03:39.826] [DEBUG] QUERY OK db=33.3ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:02:49Z", "keys_config", 39039, ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:39.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303397, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:02:49Z", message: "Current keys config version", status_log_id: 39039, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]}} [2026-06-17 05:03:39.826] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:02:49Z", "value" => ""} [2026-06-17 05:03:39.856] [DEBUG] QUERY OK db=29.2ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:02:49Z", "application", 39039, ~N[2026-06-17 05:03:39], ~N[2026-06-17 05:03:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:39.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303398, itemkey: "application", value: nil, timestamp: "2026-06-17T05:02:49Z", message: "Current application version", status_log_id: 39039, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:39], updated_at: ~N[2026-06-17 05:03:39]}} [2026-06-17 05:03:39.857] [WARN ] Unexpected async result [2026-06-17 05:03:39.857] [WARN ] Unexpected async result [2026-06-17 05:03:39.858] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.2ms idle=30.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:03:39.861] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:03:52.987] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:03:52.987] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:03:03Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:03:03Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:03:03Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:03:03Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:03:03Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:03:03Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:03:03Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:03:03Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:03:03Z","vendor":"MoreFun"} [2026-06-17 05:03:52.988] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:03Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:03Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:03Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:03Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:03Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:03Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:03Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:03Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:03:03Z", "vendor" => "MoreFun"} [2026-06-17 05:03:52.988] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:03:52.988] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:03:52.988] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:03:52.995] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms queue=0.6ms idle=1358.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-06-17 05:03:52.996] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=567.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:03:52.997] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=1.3ms 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-06-17 05:03:52.999] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.8ms idle=1.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-06-17 05:03:53.000] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=2.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:03:53.040] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:03:53.042] [DEBUG] QUERY OK db=1.3ms queue=0.5ms idle=406.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 ["372916040000000"] [2026-06-17 05:03:53.042] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:03:53.044] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms idle=43.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:03:53.045] [DEBUG] QUERY OK source="address" db=0.6ms idle=4.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:03:53.045] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:03:53.046] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:03:53.071] [DEBUG] QUERY OK db=23.7ms idle=3.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fed4dbf8e17e482d66cccecc49e66be71620a75d04e6477d1aa7492eaa850462", 2819, 937, ~U[2026-06-17 05:03:53Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:03:53.072] [INFO ] AutoPushService: Created push log 29615 for MF919 params.zip [2026-06-17 05:03:53.072] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2819, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:03:53.072] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:53.072] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:03:53.075] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms queue=0.2ms idle=28.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-06-17 05:03:53.078] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:03:53.092] [DEBUG] QUERY OK db=11.5ms queue=1.8ms idle=7.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "bce14fba137737807268b0b9ee90444cc907ad8d461d1b9349d92417fc2d2c87", 7170, 17947, ~U[2026-06-17 05:03:53Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:03:53.092] [INFO ] AutoPushService: Created push log 29616 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:03:53.092] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 7170, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:03:53.092] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:03:53.093] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:03:53.094] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms queue=0.1ms idle=17.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-06-17 05:03:53.095] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:03:53.096] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=3.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:03:53.096] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:03:53.097] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:03:53.097] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:53.097] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:03:53.098] [DEBUG] QUERY OK source="config_file_versions" db=0.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-06-17 05:03:53.098] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:03:53.098] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:03:53.099] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:03:53.099] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:03:53.122] [DEBUG] QUERY OK source="tms_terminals" db=22.5ms queue=0.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:03:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:03:53.123] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=23.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-06-17 05:03:53.124] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-06-17 05:03:53.124] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:03:53.125] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:03:53.161] [DEBUG] QUERY OK source="tms_terminals" db=36.0ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:03:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:03:53.186] [DEBUG] QUERY OK db=24.7ms idle=36.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:03:03Z", ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:03:53.187] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39040, oid: "organization_id", upload_time: "2026-06-17T05:03:03Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]} [2026-06-17 05:03:53.187] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:03Z", "value" => "online"} [2026-06-17 05:03:53.198] [DEBUG] QUERY OK db=10.7ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:03:03Z", "online", "status", 39040, ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:53.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303399, itemkey: "status", value: "online", timestamp: "2026-06-17T05:03:03Z", message: "Terminal status update", status_log_id: 39040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]}} [2026-06-17 05:03:53.198] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:03:53.199] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:53.199] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:03Z", "value" => "57"} [2026-06-17 05:03:53.224] [DEBUG] QUERY OK db=24.9ms queue=0.3ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:03:03Z", "57", "battery", 39040, ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:53.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303400, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:03:03Z", message: "Battery level", status_log_id: 39040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]}} [2026-06-17 05:03:53.225] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:03Z", "value" => "online"} [2026-06-17 05:03:53.251] [DEBUG] QUERY OK db=25.4ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:03:03Z", "online", "network", 39040, ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:53.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303401, itemkey: "network", value: "online", timestamp: "2026-06-17T05:03:03Z", message: "Network connectivity", status_log_id: 39040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]}} [2026-06-17 05:03:53.251] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:03:53.251] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:03Z", "value" => "0"} [2026-06-17 05:03:53.251] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:03:53.289] [DEBUG] QUERY OK db=36.7ms queue=0.4ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:03:03Z", "0", "cpu", 39040, ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:53.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303402, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:03:03Z", message: "CPU usage percentage", status_log_id: 39040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]}} [2026-06-17 05:03:53.290] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:03Z", "value" => "1.0.0"} [2026-06-17 05:03:53.304] [DEBUG] QUERY OK db=13.7ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:03:03Z", "1.0.0", "parameter_config", 39040, ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:53.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303403, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:03:03Z", message: "Current parameters version", status_log_id: 39040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]}} [2026-06-17 05:03:53.305] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:03Z", "value" => "1.0.1"} [2026-06-17 05:03:53.348] [DEBUG] QUERY OK db=41.0ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:03:03Z", "1.0.1", "emv_config", 39040, ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:53.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303404, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:03:03Z", message: "Current EMV config version", status_log_id: 39040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]}} [2026-06-17 05:03:53.349] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:03Z", "value" => ""} [2026-06-17 05:03:53.387] [DEBUG] QUERY OK db=34.9ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:03:03Z", "keys_config", 39040, ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:53.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303405, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:03:03Z", message: "Current keys config version", status_log_id: 39040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]}} [2026-06-17 05:03:53.388] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:03Z", "value" => ""} [2026-06-17 05:03:53.466] [DEBUG] QUERY OK db=77.6ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:03:03Z", "application", 39040, ~N[2026-06-17 05:03:53], ~N[2026-06-17 05:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:03:53.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303406, itemkey: "application", value: nil, timestamp: "2026-06-17T05:03:03Z", message: "Current application version", status_log_id: 39040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:03:53], updated_at: ~N[2026-06-17 05:03:53]}} [2026-06-17 05:03:53.466] [WARN ] Unexpected async result [2026-06-17 05:03:53.466] [WARN ] Unexpected async result [2026-06-17 05:03:53.469] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=33.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:03:53.477] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:04:09.138] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:04:09.139] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:03:19Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:03:19Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:03:19Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:03:19Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:03:19Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:03:19Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:03:19Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:03:19Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:03:19Z","vendor":"MoreFun"} [2026-06-17 05:04:09.139] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:19Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:19Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:19Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:19Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:19Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:19Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:19Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:19Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:03:19Z", "vendor" => "MoreFun"} [2026-06-17 05:04:09.139] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:04:09.139] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:04:09.139] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:04:09.140] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=0.1ms idle=1503.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-06-17 05:04:09.141] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=665.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:04:09.142] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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-06-17 05:04:09.143] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.3ms idle=1.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-06-17 05:04:09.144] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=1.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:04:09.185] [DEBUG] QUERY OK source="pos_merchant" db=39.9ms idle=1.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:04:09.186] [DEBUG] QUERY OK db=0.5ms queue=0.7ms idle=551.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 ["372916040000000"] [2026-06-17 05:04:09.186] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:04:09.187] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:04:09.188] [DEBUG] QUERY OK source="address" db=0.2ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:04:09.188] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:04:09.189] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:04:09.214] [DEBUG] QUERY OK db=23.9ms idle=2.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a23138fb5226383e80dae4a1b32627264bb7d4be9bd20229bd5fe22591d55b72", 2915, 937, ~U[2026-06-17 05:04:09Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:04:09.214] [INFO ] AutoPushService: Created push log 29617 for MF919 params.zip [2026-06-17 05:04:09.214] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2915, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:04:09.214] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:04:09.215] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:04:09.216] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=26.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-06-17 05:04:09.219] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:04:09.247] [DEBUG] QUERY OK db=26.9ms idle=6.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a636f1af7b57996605d8f12aca1fef28145ce6e7d2ac1f8ef6a0634bf41b852f", 7298, 17947, ~U[2026-06-17 05:04:09Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:04:09.247] [INFO ] AutoPushService: Created push log 29618 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:04:09.248] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 7298, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:04:09.248] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:04:09.248] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:04:09.249] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=32.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-06-17 05:04:09.249] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:04:09.251] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:04:09.251] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:04:09.252] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:04:09.252] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:04:09.252] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:04:09.253] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=3.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-06-17 05:04:09.253] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:04:09.254] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:04:09.255] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:04:09.255] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:04:09.287] [DEBUG] QUERY OK source="tms_terminals" db=31.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:04:09], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:04:09.288] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=32.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-06-17 05:04:09.288] [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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:04:09.289] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:04:09.289] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:04:09.328] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:04:09], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:04:09.361] [DEBUG] QUERY OK db=32.5ms queue=0.1ms idle=39.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:03:19Z", ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:04:09.362] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39041, oid: "organization_id", upload_time: "2026-06-17T05:03:19Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]} [2026-06-17 05:04:09.362] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:19Z", "value" => "online"} [2026-06-17 05:04:09.377] [DEBUG] QUERY OK db=15.2ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:03:19Z", "online", "status", 39041, ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:09.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303407, itemkey: "status", value: "online", timestamp: "2026-06-17T05:03:19Z", message: "Terminal status update", status_log_id: 39041, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]}} [2026-06-17 05:04:09.378] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:04:09.378] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:04:09.378] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:19Z", "value" => "57"} [2026-06-17 05:04:09.406] [DEBUG] QUERY OK db=27.4ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:03:19Z", "57", "battery", 39041, ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:09.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303408, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:03:19Z", message: "Battery level", status_log_id: 39041, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]}} [2026-06-17 05:04:09.406] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:19Z", "value" => "online"} [2026-06-17 05:04:09.441] [DEBUG] QUERY OK db=32.6ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:03:19Z", "online", "network", 39041, ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:09.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303409, itemkey: "network", value: "online", timestamp: "2026-06-17T05:03:19Z", message: "Network connectivity", status_log_id: 39041, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]}} [2026-06-17 05:04:09.441] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:04:09.442] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:19Z", "value" => "0"} [2026-06-17 05:04:09.442] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:04:09.465] [DEBUG] QUERY OK db=23.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:03:19Z", "0", "cpu", 39041, ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:09.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303410, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:03:19Z", message: "CPU usage percentage", status_log_id: 39041, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]}} [2026-06-17 05:04:09.466] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:19Z", "value" => "1.0.0"} [2026-06-17 05:04:09.482] [DEBUG] QUERY OK db=15.7ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:03:19Z", "1.0.0", "parameter_config", 39041, ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:09.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303411, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:03:19Z", message: "Current parameters version", status_log_id: 39041, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]}} [2026-06-17 05:04:09.482] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:19Z", "value" => "1.0.1"} [2026-06-17 05:04:09.509] [DEBUG] QUERY OK db=26.6ms idle=5.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:03:19Z", "1.0.1", "emv_config", 39041, ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:09.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303412, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:03:19Z", message: "Current EMV config version", status_log_id: 39041, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]}} [2026-06-17 05:04:09.509] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:19Z", "value" => ""} [2026-06-17 05:04:09.544] [DEBUG] QUERY OK db=33.7ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:03:19Z", "keys_config", 39041, ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:09.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303413, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:03:19Z", message: "Current keys config version", status_log_id: 39041, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]}} [2026-06-17 05:04:09.544] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:19Z", "value" => ""} [2026-06-17 05:04:09.568] [DEBUG] QUERY OK db=23.2ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:03:19Z", "application", 39041, ~N[2026-06-17 05:04:09], ~N[2026-06-17 05:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:09.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303414, itemkey: "application", value: nil, timestamp: "2026-06-17T05:03:19Z", message: "Current application version", status_log_id: 39041, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:09], updated_at: ~N[2026-06-17 05:04:09]}} [2026-06-17 05:04:09.568] [WARN ] Unexpected async result [2026-06-17 05:04:09.568] [WARN ] Unexpected async result [2026-06-17 05:04:09.570] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=25.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:04:09.575] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:04:19.324] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:04:19.324] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:03:29Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:03:29Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:03:29Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:03:29Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:03:29Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:03:29Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:03:29Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:03:29Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:03:29Z","vendor":"MoreFun"} [2026-06-17 05:04:19.324] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:29Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:29Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:29Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:29Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:29Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:29Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:29Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:29Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:03:29Z", "vendor" => "MoreFun"} [2026-06-17 05:04:19.324] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:04:19.325] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:04:19.325] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:04:19.326] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=824.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-06-17 05:04:19.327] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=690.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:04:19.328] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms queue=0.1ms 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-06-17 05:04:19.332] [DEBUG] QUERY OK source="parameter_definitions" db=2.4ms queue=0.4ms idle=1.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-06-17 05:04:19.334] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms idle=4.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:04:19.373] [DEBUG] QUERY OK source="pos_merchant" db=38.6ms idle=2.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:04:19.377] [DEBUG] QUERY OK db=0.7ms queue=3.3ms idle=739.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 ["372916040000000"] [2026-06-17 05:04:19.377] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:04:19.378] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms queue=0.1ms idle=43.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:04:19.379] [DEBUG] QUERY OK source="address" db=0.4ms idle=5.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:04:19.379] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:04:19.380] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:04:19.405] [DEBUG] QUERY OK db=23.6ms idle=3.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "92f45f6139f694a23a50d6cadd451aebaca69a6ddc38a597eaa49e18f58c7c8d", 7426, 937, ~U[2026-06-17 05:04:19Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:04:19.405] [INFO ] AutoPushService: Created push log 29619 for MF919 params.zip [2026-06-17 05:04:19.405] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 7426, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:04:19.405] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:04:19.406] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:04:19.407] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms queue=0.1ms idle=27.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-06-17 05:04:19.417] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:04:19.455] [DEBUG] QUERY OK db=36.3ms idle=13.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "88e60acb11dcbdfd4c73530cb131ed95af6691e1cdd54eba713d54c8946ae35f", 3075, 17947, ~U[2026-06-17 05:04:19Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:04:19.455] [INFO ] AutoPushService: Created push log 29620 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:04:19.455] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3075, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:04:19.455] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:04:19.455] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:04:19.457] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=48.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-06-17 05:04:19.457] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:04:19.458] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:04:19.458] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:04:19.459] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:04:19.460] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:04:19.460] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:04:19.461] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms 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-06-17 05:04:19.462] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:04:19.462] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:04:19.463] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:04:19.463] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:04:19.490] [DEBUG] QUERY OK source="tms_terminals" db=26.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:04:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:04:19.491] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=27.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-06-17 05:04:19.492] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.1ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:04:19.492] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:04:19.494] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:04:19.536] [DEBUG] QUERY OK source="tms_terminals" db=41.9ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:04:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:04:19.564] [DEBUG] QUERY OK db=27.6ms idle=33.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:03:29Z", ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:04:19.565] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39042, oid: "organization_id", upload_time: "2026-06-17T05:03:29Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]} [2026-06-17 05:04:19.565] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:29Z", "value" => "online"} [2026-06-17 05:04:19.589] [DEBUG] QUERY OK db=23.7ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:03:29Z", "online", "status", 39042, ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:19.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303415, itemkey: "status", value: "online", timestamp: "2026-06-17T05:03:29Z", message: "Terminal status update", status_log_id: 39042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]}} [2026-06-17 05:04:19.589] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:04:19.589] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:29Z", "value" => "57"} [2026-06-17 05:04:19.589] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:04:19.613] [DEBUG] QUERY OK db=23.1ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:03:29Z", "57", "battery", 39042, ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:19.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303416, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:03:29Z", message: "Battery level", status_log_id: 39042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]}} [2026-06-17 05:04:19.613] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:29Z", "value" => "online"} [2026-06-17 05:04:19.643] [DEBUG] QUERY OK db=28.8ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:03:29Z", "online", "network", 39042, ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:19.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303417, itemkey: "network", value: "online", timestamp: "2026-06-17T05:03:29Z", message: "Network connectivity", status_log_id: 39042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]}} [2026-06-17 05:04:19.643] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:04:19.643] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:29Z", "value" => "0"} [2026-06-17 05:04:19.644] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:04:19.669] [DEBUG] QUERY OK db=24.9ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:03:29Z", "0", "cpu", 39042, ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:19.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303418, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:03:29Z", message: "CPU usage percentage", status_log_id: 39042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]}} [2026-06-17 05:04:19.670] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:29Z", "value" => "1.0.0"} [2026-06-17 05:04:19.695] [DEBUG] QUERY OK db=24.2ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:03:29Z", "1.0.0", "parameter_config", 39042, ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:19.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303419, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:03:29Z", message: "Current parameters version", status_log_id: 39042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]}} [2026-06-17 05:04:19.695] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:29Z", "value" => "1.0.1"} [2026-06-17 05:04:19.729] [DEBUG] QUERY OK db=32.9ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:03:29Z", "1.0.1", "emv_config", 39042, ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:19.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303420, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:03:29Z", message: "Current EMV config version", status_log_id: 39042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]}} [2026-06-17 05:04:19.729] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:29Z", "value" => ""} [2026-06-17 05:04:19.752] [DEBUG] QUERY OK db=22.6ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:03:29Z", "keys_config", 39042, ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:19.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303421, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:03:29Z", message: "Current keys config version", status_log_id: 39042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]}} [2026-06-17 05:04:19.753] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:29Z", "value" => ""} [2026-06-17 05:04:19.775] [DEBUG] QUERY OK db=21.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:03:29Z", "application", 39042, ~N[2026-06-17 05:04:19], ~N[2026-06-17 05:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:19.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303422, itemkey: "application", value: nil, timestamp: "2026-06-17T05:03:29Z", message: "Current application version", status_log_id: 39042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:19], updated_at: ~N[2026-06-17 05:04:19]}} [2026-06-17 05:04:19.775] [WARN ] Unexpected async result [2026-06-17 05:04:19.775] [WARN ] Unexpected async result [2026-06-17 05:04:19.776] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=23.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:04:19.781] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:04:28.506] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:04:28.506] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:03:38Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:03:38Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:03:38Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:03:38Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:03:38Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:03:38Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:03:38Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:03:38Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:03:38Z","vendor":"MoreFun"} [2026-06-17 05:04:28.507] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:38Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:38Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:38Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:38Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:38Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:38Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:38Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:38Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:03:38Z", "vendor" => "MoreFun"} [2026-06-17 05:04:28.507] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:04:28.507] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:04:28.507] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:04:28.508] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=979.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-06-17 05:04:28.509] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=872.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:04:28.511] [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-06-17 05:04:28.512] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=2.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-06-17 05:04:28.513] [DEBUG] QUERY OK source="pos_terminal" db=0.2ms 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 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:04:28.553] [DEBUG] QUERY OK source="pos_merchant" db=40.3ms idle=0.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:04:28.555] [DEBUG] QUERY OK db=0.7ms queue=0.4ms idle=1920.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 ["372916040000000"] [2026-06-17 05:04:28.555] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:04:28.556] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=25.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:04:28.556] [DEBUG] QUERY OK source="address" db=0.2ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:04:28.556] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:04:28.557] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:04:28.591] [DEBUG] QUERY OK db=33.4ms idle=1.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "096a8af222816b2810cae33f37a616e02a0cb5d21e29484fe7e09a5489adc3c8", 3235, 937, ~U[2026-06-17 05:04:28Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:04:28.591] [INFO ] AutoPushService: Created push log 29621 for MF919 params.zip [2026-06-17 05:04:28.592] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 3235, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:04:28.592] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:04:28.592] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:04:28.593] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=35.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-06-17 05:04:28.595] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:04:28.627] [DEBUG] QUERY OK db=31.0ms idle=4.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5a79e699c39ce3bfee0a5f266452fe9251a2acc36c5ec92dbe66995fb2934940", 3299, 17947, ~U[2026-06-17 05:04:28Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:04:28.627] [INFO ] AutoPushService: Created push log 29622 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:04:28.627] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3299, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:04:28.627] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:04:28.627] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:04:28.628] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=35.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-06-17 05:04:28.628] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:04:28.630] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:04:28.630] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:04:28.631] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:04:28.631] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:04:28.631] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:04:28.632] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 05:04:28.633] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:04:28.633] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:04:28.634] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:04:28.634] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:04:28.650] [DEBUG] QUERY OK source="tms_terminals" db=14.8ms queue=0.2ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:04:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:04:28.650] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=16.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-06-17 05:04:28.651] [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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:04:28.651] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:04:28.652] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:04:28.683] [DEBUG] QUERY OK source="tms_terminals" db=31.2ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:04:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:04:28.707] [DEBUG] QUERY OK db=22.7ms idle=31.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:03:38Z", ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:04:28.707] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39043, oid: "organization_id", upload_time: "2026-06-17T05:03:38Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]} [2026-06-17 05:04:28.708] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:38Z", "value" => "online"} [2026-06-17 05:04:28.730] [DEBUG] QUERY OK db=22.3ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:03:38Z", "online", "status", 39043, ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:28.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303423, itemkey: "status", value: "online", timestamp: "2026-06-17T05:03:38Z", message: "Terminal status update", status_log_id: 39043, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]}} [2026-06-17 05:04:28.731] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:04:28.731] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:04:28.731] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:38Z", "value" => "57"} [2026-06-17 05:04:28.745] [DEBUG] QUERY OK db=13.4ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:03:38Z", "57", "battery", 39043, ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:28.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303424, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:03:38Z", message: "Battery level", status_log_id: 39043, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]}} [2026-06-17 05:04:28.745] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:38Z", "value" => "online"} [2026-06-17 05:04:28.765] [DEBUG] QUERY OK db=19.6ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:03:38Z", "online", "network", 39043, ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:28.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303425, itemkey: "network", value: "online", timestamp: "2026-06-17T05:03:38Z", message: "Network connectivity", status_log_id: 39043, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]}} [2026-06-17 05:04:28.766] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:04:28.766] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:04:28.766] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:38Z", "value" => "0"} [2026-06-17 05:04:28.794] [DEBUG] QUERY OK db=27.5ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:03:38Z", "0", "cpu", 39043, ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:28.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303426, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:03:38Z", message: "CPU usage percentage", status_log_id: 39043, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]}} [2026-06-17 05:04:28.795] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:38Z", "value" => "1.0.0"} [2026-06-17 05:04:28.827] [DEBUG] QUERY OK db=32.1ms queue=0.4ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:03:38Z", "1.0.0", "parameter_config", 39043, ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:28.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303427, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:03:38Z", message: "Current parameters version", status_log_id: 39043, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]}} [2026-06-17 05:04:28.828] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:38Z", "value" => "1.0.1"} [2026-06-17 05:04:28.845] [DEBUG] QUERY OK db=16.4ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:03:38Z", "1.0.1", "emv_config", 39043, ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:28.845] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303428, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:03:38Z", message: "Current EMV config version", status_log_id: 39043, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]}} [2026-06-17 05:04:28.845] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:38Z", "value" => ""} [2026-06-17 05:04:28.863] [DEBUG] QUERY OK db=16.8ms queue=0.3ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:03:38Z", "keys_config", 39043, ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:28.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303429, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:03:38Z", message: "Current keys config version", status_log_id: 39043, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]}} [2026-06-17 05:04:28.863] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:38Z", "value" => ""} [2026-06-17 05:04:28.898] [DEBUG] QUERY OK db=34.7ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:03:38Z", "application", 39043, ~N[2026-06-17 05:04:28], ~N[2026-06-17 05:04:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:28.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303430, itemkey: "application", value: nil, timestamp: "2026-06-17T05:03:38Z", message: "Current application version", status_log_id: 39043, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:28], updated_at: ~N[2026-06-17 05:04:28]}} [2026-06-17 05:04:28.899] [WARN ] Unexpected async result [2026-06-17 05:04:28.899] [WARN ] Unexpected async result [2026-06-17 05:04:28.901] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.2ms idle=36.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:04:28.907] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:04:47.870] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:04:47.870] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:03:58Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:03:58Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:03:58Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:03:58Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:03:58Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:03:58Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:03:58Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:03:58Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:03:58Z","vendor":"MoreFun"} [2026-06-17 05:04:47.870] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:58Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:58Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:58Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:58Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:58Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:58Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:58Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:58Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:03:58Z", "vendor" => "MoreFun"} [2026-06-17 05:04:47.870] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:04:47.870] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:04:47.870] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:04:47.873] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=737.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:04:47.875] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.6ms idle=261.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:04:47.878] [DEBUG] QUERY OK source="parameter_template_values" db=2.3ms 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-06-17 05:04:47.882] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=2.2ms idle=3.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-06-17 05:04:47.883] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms 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 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:04:47.922] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=1.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:04:47.924] [DEBUG] QUERY OK db=0.5ms queue=0.4ms idle=1289.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 ["372916040000000"] [2026-06-17 05:04:47.924] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:04:47.924] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:04:47.925] [DEBUG] QUERY OK source="address" db=0.4ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:04:47.925] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:04:47.927] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:04:47.943] [DEBUG] QUERY OK db=15.1ms idle=2.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "0673275e3aeb4ac95db6b23fd5dd198b085a92f1096a413309dbd892a5eea661", 388, 937, ~U[2026-06-17 05:04:47Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:04:47], ~N[2026-06-17 05:04:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:04:47.943] [INFO ] AutoPushService: Created push log 29623 for MF919 params.zip [2026-06-17 05:04:47.943] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 388, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:04:47.944] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:04:47.944] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:04:47.946] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=19.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-06-17 05:04:47.952] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:04:47.965] [DEBUG] QUERY OK db=12.0ms idle=10.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2fc0e0286cd6a2cf801661d747a9e9d45a67869b1a6388e57150b70ae39f9962", 3459, 17947, ~U[2026-06-17 05:04:47Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:04:47], ~N[2026-06-17 05:04:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:04:47.965] [INFO ] AutoPushService: Created push log 29624 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:04:47.965] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3459, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:04:47.965] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:04:47.966] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:04:47.967] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=20.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-06-17 05:04:47.967] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:04:47.968] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:04:47.968] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:04:47.971] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:04:47.971] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:04:47.972] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:04:47.975] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.1ms idle=5.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-06-17 05:04:47.976] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:04:47.976] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:04:47.979] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.2ms idle=9.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:04:47.979] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:04:48.004] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:04:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:04:48.005] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=25.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-06-17 05:04:48.006] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 05:04:48.006] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:04:48.007] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:04:48.037] [DEBUG] QUERY OK source="tms_terminals" db=29.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:04:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:04:48.056] [DEBUG] QUERY OK db=18.5ms queue=0.1ms idle=30.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:03:58Z", ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:04:48.056] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39044, oid: "organization_id", upload_time: "2026-06-17T05:03:58Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]} [2026-06-17 05:04:48.057] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:03:58Z", "value" => "online"} [2026-06-17 05:04:48.074] [DEBUG] QUERY OK db=17.1ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:03:58Z", "online", "status", 39044, ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:48.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303431, itemkey: "status", value: "online", timestamp: "2026-06-17T05:03:58Z", message: "Terminal status update", status_log_id: 39044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]}} [2026-06-17 05:04:48.074] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:04:48.075] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:04:48.075] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:03:58Z", "value" => "57"} [2026-06-17 05:04:48.104] [DEBUG] QUERY OK db=28.4ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:03:58Z", "57", "battery", 39044, ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:48.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303432, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:03:58Z", message: "Battery level", status_log_id: 39044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]}} [2026-06-17 05:04:48.104] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:03:58Z", "value" => "online"} [2026-06-17 05:04:48.141] [DEBUG] QUERY OK db=36.0ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:03:58Z", "online", "network", 39044, ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:48.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303433, itemkey: "network", value: "online", timestamp: "2026-06-17T05:03:58Z", message: "Network connectivity", status_log_id: 39044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]}} [2026-06-17 05:04:48.141] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:04:48.142] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:03:58Z", "value" => "0"} [2026-06-17 05:04:48.142] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:04:48.168] [DEBUG] QUERY OK db=26.1ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:03:58Z", "0", "cpu", 39044, ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:48.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303434, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:03:58Z", message: "CPU usage percentage", status_log_id: 39044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]}} [2026-06-17 05:04:48.169] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:03:58Z", "value" => "1.0.0"} [2026-06-17 05:04:48.196] [DEBUG] QUERY OK db=26.6ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:03:58Z", "1.0.0", "parameter_config", 39044, ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:48.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303435, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:03:58Z", message: "Current parameters version", status_log_id: 39044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]}} [2026-06-17 05:04:48.196] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:03:58Z", "value" => "1.0.1"} [2026-06-17 05:04:48.220] [DEBUG] QUERY OK db=23.5ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:03:58Z", "1.0.1", "emv_config", 39044, ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:48.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303436, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:03:58Z", message: "Current EMV config version", status_log_id: 39044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]}} [2026-06-17 05:04:48.221] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:03:58Z", "value" => ""} [2026-06-17 05:04:48.253] [DEBUG] QUERY OK db=31.5ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:03:58Z", "keys_config", 39044, ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:48.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303437, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:03:58Z", message: "Current keys config version", status_log_id: 39044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]}} [2026-06-17 05:04:48.253] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:03:58Z", "value" => ""} [2026-06-17 05:04:48.279] [DEBUG] QUERY OK db=25.3ms queue=0.1ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:03:58Z", "application", 39044, ~N[2026-06-17 05:04:48], ~N[2026-06-17 05:04:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:04:48.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303438, itemkey: "application", value: nil, timestamp: "2026-06-17T05:03:58Z", message: "Current application version", status_log_id: 39044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:04:48], updated_at: ~N[2026-06-17 05:04:48]}} [2026-06-17 05:04:48.279] [WARN ] Unexpected async result [2026-06-17 05:04:48.279] [WARN ] Unexpected async result [2026-06-17 05:04:48.283] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=27.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:04:48.291] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:05:18.626] [INFO ] Running offline device check... [2026-06-17 05:05:18.627] [INFO ] Starting offline device check... [2026-06-17 05:05:18.628] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1449.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:677 [2026-06-17 05:05:18.634] [INFO ] Starting scheduled rule validation [2026-06-17 05:05:18.634] [DEBUG] Validating missing assignments [2026-06-17 05:05:18.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.8ms queue=0.6ms idle=949.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:688 [2026-06-17 05:05:18.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.658] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.659] [DEBUG] QUERY OK source="terminal_group_rules" db=1.0ms queue=1.2ms idle=1.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-06-17 05:05:18.661] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-06-17 05:05:18.661] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.663] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.663] [DEBUG] Re-applied 0 rules during validation [2026-06-17 05:05:18.664] [DEBUG] Validating invalid assignments [2026-06-17 05:05:18.664] [DEBUG] Validating rule consistency [2026-06-17 05:05:18.664] [DEBUG] Updating group terminal counts [2026-06-17 05:05:18.665] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.665] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.5ms idle=0.9ms 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-06-17 05:05:18.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.673] [DEBUG] QUERY OK source="terminal_groups" db=3.4ms queue=3.8ms idle=0.2ms 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-06-17 05:05:18.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.687] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.5ms idle=0.1ms 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-06-17 05:05:18.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.690] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms queue=1.1ms 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-06-17 05:05:18.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.691] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.3ms 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-06-17 05:05:18.692] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.6ms idle=0.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-06-17 05:05:18.692] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.693] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.9ms queue=0.3ms idle=0.2ms 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-06-17 05:05:18.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.696] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=1.7ms idle=0.1ms 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-06-17 05:05:18.697] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 05:05:18.699] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 05:05:18.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms queue=0.1ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=8.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:688 [2026-06-17 05:05:18.706] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.709] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.709] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.720] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.720] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=10.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:688 [2026-06-17 05:05:18.723] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.728] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.732] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.735] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.736] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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:688 [2026-06-17 05:05:18.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.746] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.747] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.748] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.749] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.750] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.751] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:05:18.751] [INFO ] Offline device check completed. Found 37 offline devices, updated 0 statuses. [2026-06-17 05:05:18.751] [INFO ] Offline device check completed successfully [2026-06-17 05:05:20.994] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:05:20.994] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:04:31Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:04:31Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:04:31Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:04:31Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:04:31Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:04:31Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:04:31Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:04:31Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:04:31Z","vendor":"MoreFun"} [2026-06-17 05:05:20.994] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:04:31Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:04:31Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:04:31Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:04:31Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:04:31Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:04:31Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:04:31Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:04:31Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:04:31Z", "vendor" => "MoreFun"} [2026-06-17 05:05:20.994] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:05:20.995] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:05:20.995] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:05:20.997] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms 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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:05:20.998] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=305.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:05:20.999] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms 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-06-17 05:05:21.002] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.8ms idle=2.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-06-17 05:05:21.004] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms 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 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:05:21.042] [DEBUG] QUERY OK source="pos_merchant" db=38.5ms idle=2.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:05:21.044] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=1405.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 ["372916040000000"] [2026-06-17 05:05:21.044] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:05:21.045] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=40.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:05:21.045] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:05:21.045] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:05:21.046] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:05:21.059] [DEBUG] QUERY OK db=11.5ms queue=0.1ms idle=2.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "22ed287b439436a1cab5e4bb7d6395ea57d40912f6e6635591698aa6e3b98a97", 484, 937, ~U[2026-06-17 05:05:21Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:05:21.059] [INFO ] AutoPushService: Created push log 29625 for MF919 params.zip [2026-06-17 05:05:21.059] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 484, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:05:21.059] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:05:21.060] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:05:21.061] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=14.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-06-17 05:05:21.064] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:05:21.082] [DEBUG] QUERY OK db=17.0ms idle=6.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "007326e4b580e25497414b35d33ae431b89a0fda326ebf3d4284557e1d434b8b", 3779, 17947, ~U[2026-06-17 05:05:21Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:05:21.083] [INFO ] AutoPushService: Created push log 29626 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:05:21.083] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3779, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:05:21.083] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:05:21.084] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:05:21.085] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=23.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-06-17 05:05:21.085] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:05:21.086] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:05:21.086] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:05:21.088] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:05:21.088] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:05:21.089] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:05:21.090] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=4.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-06-17 05:05:21.090] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:05:21.091] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:05:21.092] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:05:21.092] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:05:21.138] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:05:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:05:21.140] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.1ms idle=47.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-06-17 05:05:21.141] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=2.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-06-17 05:05:21.141] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:05:21.142] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:05:21.159] [DEBUG] QUERY OK source="tms_terminals" db=16.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:05:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:05:21.174] [DEBUG] QUERY OK db=14.5ms idle=17.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:04:31Z", ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:05:21.174] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39045, oid: "organization_id", upload_time: "2026-06-17T05:04:31Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]} [2026-06-17 05:05:21.174] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:04:31Z", "value" => "online"} [2026-06-17 05:05:21.185] [DEBUG] QUERY OK db=10.7ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:04:31Z", "online", "status", 39045, ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:21.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303439, itemkey: "status", value: "online", timestamp: "2026-06-17T05:04:31Z", message: "Terminal status update", status_log_id: 39045, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]}} [2026-06-17 05:05:21.186] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:05:21.187] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:04:31Z", "value" => "57"} [2026-06-17 05:05:21.187] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:05:21.220] [DEBUG] QUERY OK db=33.4ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:04:31Z", "57", "battery", 39045, ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:21.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303440, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:04:31Z", message: "Battery level", status_log_id: 39045, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]}} [2026-06-17 05:05:21.221] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:04:31Z", "value" => "online"} [2026-06-17 05:05:21.244] [DEBUG] QUERY OK db=22.8ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:04:31Z", "online", "network", 39045, ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:21.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303441, itemkey: "network", value: "online", timestamp: "2026-06-17T05:04:31Z", message: "Network connectivity", status_log_id: 39045, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]}} [2026-06-17 05:05:21.245] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:05:21.245] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:04:31Z", "value" => "0"} [2026-06-17 05:05:21.245] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:05:21.272] [DEBUG] QUERY OK db=26.4ms queue=0.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:04:31Z", "0", "cpu", 39045, ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:21.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303442, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:04:31Z", message: "CPU usage percentage", status_log_id: 39045, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]}} [2026-06-17 05:05:21.274] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:04:31Z", "value" => "1.0.0"} [2026-06-17 05:05:21.321] [DEBUG] QUERY OK db=46.2ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:04:31Z", "1.0.0", "parameter_config", 39045, ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:21.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303443, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:04:31Z", message: "Current parameters version", status_log_id: 39045, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]}} [2026-06-17 05:05:21.321] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:04:31Z", "value" => "1.0.1"} [2026-06-17 05:05:21.354] [DEBUG] QUERY OK db=32.3ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:04:31Z", "1.0.1", "emv_config", 39045, ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:21.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303444, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:04:31Z", message: "Current EMV config version", status_log_id: 39045, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]}} [2026-06-17 05:05:21.355] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:04:31Z", "value" => ""} [2026-06-17 05:05:21.474] [DEBUG] QUERY OK db=119.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:04:31Z", "keys_config", 39045, ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:21.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303445, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:04:31Z", message: "Current keys config version", status_log_id: 39045, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]}} [2026-06-17 05:05:21.475] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:04:31Z", "value" => ""} [2026-06-17 05:05:21.500] [DEBUG] QUERY OK db=25.3ms idle=120.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:04:31Z", "application", 39045, ~N[2026-06-17 05:05:21], ~N[2026-06-17 05:05:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:21.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303446, itemkey: "application", value: nil, timestamp: "2026-06-17T05:04:31Z", message: "Current application version", status_log_id: 39045, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:21], updated_at: ~N[2026-06-17 05:05:21]}} [2026-06-17 05:05:21.501] [WARN ] Unexpected async result [2026-06-17 05:05:21.501] [WARN ] Unexpected async result [2026-06-17 05:05:21.502] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=26.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:05:21.506] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:05:33.839] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:05:33.840] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:04:44Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:04:44Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:04:44Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:04:44Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:04:44Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:04:44Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:04:44Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:04:44Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:04:44Z","vendor":"MoreFun"} [2026-06-17 05:05:33.840] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:04:44Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:04:44Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:04:44Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:04:44Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:04:44Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:04:44Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:04:44Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:04:44Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:04:44Z", "vendor" => "MoreFun"} [2026-06-17 05:05:33.840] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:05:33.840] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:05:33.840] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:05:33.841] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1115.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-06-17 05:05:33.842] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:05:33.843] [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-06-17 05:05:33.845] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=0.7ms idle=1.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-06-17 05:05:33.846] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=2.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:05:33.888] [DEBUG] QUERY OK source="pos_merchant" db=41.1ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:05:33.890] [DEBUG] QUERY OK db=0.9ms queue=0.8ms idle=1250.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 ["372916040000000"] [2026-06-17 05:05:33.890] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:05:33.892] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms idle=44.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:05:33.893] [DEBUG] QUERY OK source="address" db=0.9ms queue=0.2ms idle=4.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:05:33.893] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:05:33.895] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:05:33.930] [DEBUG] QUERY OK db=33.1ms queue=0.5ms idle=4.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6c1a110ac0409ea9a712c63e8812feebbb5c0c45a2bfd97b37a48db2c0ed4ad3", 3907, 937, ~U[2026-06-17 05:05:33Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:05:33], ~N[2026-06-17 05:05:33]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:05:33.931] [INFO ] AutoPushService: Created push log 29627 for MF919 params.zip [2026-06-17 05:05:33.931] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 3907, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:05:33.931] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:05:33.931] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:05:33.932] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=38.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-06-17 05:05:33.936] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:05:33.960] [DEBUG] QUERY OK db=20.7ms idle=8.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "21a42f155c1701bebc8f335c50dd4992ff5e478d6d1456d5f6d261328f0ffe28", 7714, 17947, ~U[2026-06-17 05:05:33Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:05:33], ~N[2026-06-17 05:05:33]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:05:33.960] [INFO ] AutoPushService: Created push log 29628 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:05:33.960] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 7714, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:05:33.960] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:05:33.960] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:05:33.965] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms idle=28.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-06-17 05:05:33.965] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:05:33.967] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=5.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:05:33.967] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:05:33.970] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:05:33.970] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:05:33.970] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:05:33.972] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.1ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 05:05:33.976] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:05:33.976] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:05:33.978] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:05:33.978] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:05:33.997] [DEBUG] QUERY OK source="tms_terminals" db=18.0ms idle=7.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:05:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:05:33.998] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=19.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-06-17 05:05:33.999] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms 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-06-17 05:05:33.999] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:05:34.000] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:05:34.034] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:05:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:05:34.069] [DEBUG] QUERY OK db=33.3ms idle=34.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:04:44Z", ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:05:34.069] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39046, oid: "organization_id", upload_time: "2026-06-17T05:04:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]} [2026-06-17 05:05:34.069] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:04:44Z", "value" => "online"} [2026-06-17 05:05:34.090] [DEBUG] QUERY OK db=20.8ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:04:44Z", "online", "status", 39046, ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:34.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303447, itemkey: "status", value: "online", timestamp: "2026-06-17T05:04:44Z", message: "Terminal status update", status_log_id: 39046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]}} [2026-06-17 05:05:34.091] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:05:34.091] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:05:34.091] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:04:44Z", "value" => "57"} [2026-06-17 05:05:34.110] [DEBUG] QUERY OK db=17.8ms queue=0.2ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:04:44Z", "57", "battery", 39046, ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:34.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303448, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:04:44Z", message: "Battery level", status_log_id: 39046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]}} [2026-06-17 05:05:34.112] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:04:44Z", "value" => "online"} [2026-06-17 05:05:34.142] [DEBUG] QUERY OK db=29.3ms queue=0.4ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:04:44Z", "online", "network", 39046, ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:34.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303449, itemkey: "network", value: "online", timestamp: "2026-06-17T05:04:44Z", message: "Network connectivity", status_log_id: 39046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]}} [2026-06-17 05:05:34.143] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:05:34.143] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:05:34.144] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:04:44Z", "value" => "0"} [2026-06-17 05:05:34.168] [DEBUG] QUERY OK db=24.0ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:04:44Z", "0", "cpu", 39046, ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:34.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303450, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:04:44Z", message: "CPU usage percentage", status_log_id: 39046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]}} [2026-06-17 05:05:34.169] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:04:44Z", "value" => "1.0.0"} [2026-06-17 05:05:34.200] [DEBUG] QUERY OK db=30.8ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:04:44Z", "1.0.0", "parameter_config", 39046, ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:34.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303451, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:04:44Z", message: "Current parameters version", status_log_id: 39046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]}} [2026-06-17 05:05:34.201] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:04:44Z", "value" => "1.0.1"} [2026-06-17 05:05:34.220] [DEBUG] QUERY OK db=18.7ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:04:44Z", "1.0.1", "emv_config", 39046, ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:34.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303452, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:04:44Z", message: "Current EMV config version", status_log_id: 39046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]}} [2026-06-17 05:05:34.220] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:04:44Z", "value" => ""} [2026-06-17 05:05:34.249] [DEBUG] QUERY OK db=28.5ms queue=0.1ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:04:44Z", "keys_config", 39046, ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:34.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303453, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:04:44Z", message: "Current keys config version", status_log_id: 39046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]}} [2026-06-17 05:05:34.250] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:04:44Z", "value" => ""} [2026-06-17 05:05:34.286] [DEBUG] QUERY OK db=36.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:04:44Z", "application", 39046, ~N[2026-06-17 05:05:34], ~N[2026-06-17 05:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:34.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303454, itemkey: "application", value: nil, timestamp: "2026-06-17T05:04:44Z", message: "Current application version", status_log_id: 39046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:34], updated_at: ~N[2026-06-17 05:05:34]}} [2026-06-17 05:05:34.287] [WARN ] Unexpected async result [2026-06-17 05:05:34.287] [WARN ] Unexpected async result [2026-06-17 05:05:34.289] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:05:34.298] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:05:40.144] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:05:40.144] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:04:50Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:04:50Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:04:50Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:04:50Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:04:50Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:04:50Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:04:50Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:04:50Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:04:50Z","vendor":"MoreFun"} [2026-06-17 05:05:40.146] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:04:50Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:04:50Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:04:50Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:04:50Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:04:50Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:04:50Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:04:50Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:04:50Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:04:50Z", "vendor" => "MoreFun"} [2026-06-17 05:05:40.146] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:05:40.146] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:05:40.146] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:05:40.147] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=507.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-06-17 05:05:40.148] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.3ms idle=403.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:05:40.149] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 05:05:40.152] [DEBUG] QUERY OK source="parameter_definitions" db=1.3ms queue=0.6ms idle=1.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-06-17 05:05:40.154] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=3.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:05:40.193] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms queue=0.2ms idle=1.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:05:40.196] [DEBUG] QUERY OK db=1.4ms queue=0.5ms idle=555.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 ["372916040000000"] [2026-06-17 05:05:40.196] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:05:40.199] [DEBUG] QUERY OK source="pos_terminal_data" db=2.8ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:05:40.201] [DEBUG] QUERY OK source="address" db=1.9ms idle=5.6ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:05:40.201] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:05:40.203] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:05:40.247] [DEBUG] QUERY OK db=41.5ms idle=6.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ba2dbb56f5feb2d01c123ac45ba9dc5b73745c5c6d43b04584633b87e05fe9d4", 7842, 937, ~U[2026-06-17 05:05:40Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:05:40.248] [INFO ] AutoPushService: Created push log 29629 for MF919 params.zip [2026-06-17 05:05:40.248] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 7842, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:05:40.248] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:05:40.249] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:05:40.252] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=50.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-06-17 05:05:40.256] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:05:40.283] [DEBUG] QUERY OK db=25.7ms queue=0.1ms idle=9.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "919129a590fa07b57605f0aca3ead640900c80ef80dcec80e6cf4346956fdd7b", 7906, 17947, ~U[2026-06-17 05:05:40Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:05:40.284] [INFO ] AutoPushService: Created push log 29630 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:05:40.284] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 7906, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:05:40.284] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:05:40.285] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:05:40.286] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=33.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-06-17 05:05:40.287] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:05:40.288] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:05:40.289] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:05:40.291] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:05:40.292] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:05:40.293] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:05:40.294] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.1ms idle=7.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-06-17 05:05:40.295] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:05:40.295] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:05:40.296] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=7.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:05:40.297] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:05:40.336] [DEBUG] QUERY OK source="tms_terminals" db=39.1ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:05:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:05:40.337] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=40.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-06-17 05:05:40.338] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:05:40.338] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:05:40.339] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:05:40.354] [DEBUG] QUERY OK source="tms_terminals" db=14.4ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:05:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:05:40.378] [DEBUG] QUERY OK db=23.2ms idle=15.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:04:50Z", ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:05:40.378] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39047, oid: "organization_id", upload_time: "2026-06-17T05:04:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]} [2026-06-17 05:05:40.378] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:04:50Z", "value" => "online"} [2026-06-17 05:05:40.402] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:04:50Z", "online", "status", 39047, ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:40.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303455, itemkey: "status", value: "online", timestamp: "2026-06-17T05:04:50Z", message: "Terminal status update", status_log_id: 39047, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]}} [2026-06-17 05:05:40.403] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:05:40.403] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:04:50Z", "value" => "57"} [2026-06-17 05:05:40.403] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:05:40.438] [DEBUG] QUERY OK db=34.7ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:04:50Z", "57", "battery", 39047, ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:40.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303456, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:04:50Z", message: "Battery level", status_log_id: 39047, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]}} [2026-06-17 05:05:40.439] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:04:50Z", "value" => "online"} [2026-06-17 05:05:40.452] [DEBUG] QUERY OK db=12.6ms queue=0.1ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:04:50Z", "online", "network", 39047, ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:40.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303457, itemkey: "network", value: "online", timestamp: "2026-06-17T05:04:50Z", message: "Network connectivity", status_log_id: 39047, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]}} [2026-06-17 05:05:40.452] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:05:40.453] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:04:50Z", "value" => "0"} [2026-06-17 05:05:40.453] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:05:40.475] [DEBUG] QUERY OK db=21.8ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:04:50Z", "0", "cpu", 39047, ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:40.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303458, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:04:50Z", message: "CPU usage percentage", status_log_id: 39047, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]}} [2026-06-17 05:05:40.475] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:04:50Z", "value" => "1.0.0"} [2026-06-17 05:05:40.502] [DEBUG] QUERY OK db=26.0ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:04:50Z", "1.0.0", "parameter_config", 39047, ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:40.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303459, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:04:50Z", message: "Current parameters version", status_log_id: 39047, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]}} [2026-06-17 05:05:40.502] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:04:50Z", "value" => "1.0.1"} [2026-06-17 05:05:40.526] [DEBUG] QUERY OK db=23.2ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:04:50Z", "1.0.1", "emv_config", 39047, ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:40.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303460, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:04:50Z", message: "Current EMV config version", status_log_id: 39047, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]}} [2026-06-17 05:05:40.526] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:04:50Z", "value" => ""} [2026-06-17 05:05:40.581] [DEBUG] QUERY OK db=53.2ms queue=0.5ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:04:50Z", "keys_config", 39047, ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:40.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303461, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:04:50Z", message: "Current keys config version", status_log_id: 39047, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]}} [2026-06-17 05:05:40.581] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:04:50Z", "value" => ""} [2026-06-17 05:05:40.597] [DEBUG] QUERY OK db=14.8ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:04:50Z", "application", 39047, ~N[2026-06-17 05:05:40], ~N[2026-06-17 05:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:05:40.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303462, itemkey: "application", value: nil, timestamp: "2026-06-17T05:04:50Z", message: "Current application version", status_log_id: 39047, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:05:40], updated_at: ~N[2026-06-17 05:05:40]}} [2026-06-17 05:05:40.599] [WARN ] Unexpected async result [2026-06-17 05:05:40.599] [WARN ] Unexpected async result [2026-06-17 05:05:40.603] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:05:40.613] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:06:39.410] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:06:39.411] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:05:49Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:05:49Z","value":"57"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:05:49Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:05:49Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:05:49Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:05:49Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:05:49Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:05:49Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:05:49Z","vendor":"MoreFun"} [2026-06-17 05:06:39.411] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:05:49Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:05:49Z", "value" => "57"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:05:49Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:05:49Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:05:49Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:05:49Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:05:49Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:05:49Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:05:49Z", "vendor" => "MoreFun"} [2026-06-17 05:06:39.411] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:06:39.411] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:06:39.411] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:06:39.412] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=911.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-06-17 05:06:39.413] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=484.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:06:39.414] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=1.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-06-17 05:06:39.416] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=0.4ms idle=1.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-06-17 05:06:39.417] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=2.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:153 [2026-06-17 05:06:39.456] [DEBUG] QUERY OK source="pos_merchant" db=39.6ms idle=1.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:164 [2026-06-17 05:06:39.459] [DEBUG] QUERY OK db=2.1ms queue=0.5ms idle=1812.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 ["372916040000000"] [2026-06-17 05:06:39.459] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:06:39.460] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=43.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:250 [2026-06-17 05:06:39.463] [DEBUG] QUERY OK source="address" db=1.9ms queue=0.2ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:06:39.463] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:06:39.467] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:06:39.741] [DEBUG] QUERY OK db=271.2ms idle=9.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1bd0e2885f88bc0ec616d999da574bdb89986775de07e0c7e397be249ad9fc36", 4131, 937, ~U[2026-06-17 05:06:39Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:06:39.741] [INFO ] AutoPushService: Created push log 29631 for MF919 params.zip [2026-06-17 05:06:39.741] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 4131, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:06:39.742] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:06:39.742] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:06:39.744] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms queue=0.1ms idle=279.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-06-17 05:06:39.747] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:06:39.759] [DEBUG] QUERY OK db=11.0ms idle=6.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "7478a467c9e9628b814ca757715354318d25d1637d259a0136f192f85013b68b", 580, 17947, ~U[2026-06-17 05:06:39Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:06:39.759] [INFO ] AutoPushService: Created push log 29632 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:06:39.759] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 580, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:06:39.759] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:06:39.759] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:06:39.761] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.1ms idle=16.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-06-17 05:06:39.761] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:06:39.762] [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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:06:39.762] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:06:39.764] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:06:39.765] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:06:39.765] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:06:39.765] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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-06-17 05:06:39.766] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:06:39.766] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:06:39.767] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:06:39.767] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:06:39.791] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:06:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:06:39.792] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=24.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-06-17 05:06:39.793] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 05:06:39.793] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:06:39.795] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:06:39.827] [DEBUG] QUERY OK source="tms_terminals" db=31.3ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:06:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:06:39.839] [DEBUG] QUERY OK db=12.4ms idle=32.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:05:49Z", ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:06:39.840] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39048, oid: "organization_id", upload_time: "2026-06-17T05:05:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]} [2026-06-17 05:06:39.840] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:05:49Z", "value" => "online"} [2026-06-17 05:06:39.849] [DEBUG] QUERY OK db=8.6ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:05:49Z", "online", "status", 39048, ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:06:39.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303463, itemkey: "status", value: "online", timestamp: "2026-06-17T05:05:49Z", message: "Terminal status update", status_log_id: 39048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]}} [2026-06-17 05:06:39.850] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:06:39.850] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:06:39.852] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:05:49Z", "value" => "57"} [2026-06-17 05:06:39.870] [DEBUG] QUERY OK db=18.1ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:05:49Z", "57", "battery", 39048, ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:06:39.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303464, itemkey: "battery", value: "57", timestamp: "2026-06-17T05:05:49Z", message: "Battery level", status_log_id: 39048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]}} [2026-06-17 05:06:39.871] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:05:49Z", "value" => "online"} [2026-06-17 05:06:39.894] [DEBUG] QUERY OK db=23.0ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:05:49Z", "online", "network", 39048, ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:06:39.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303465, itemkey: "network", value: "online", timestamp: "2026-06-17T05:05:49Z", message: "Network connectivity", status_log_id: 39048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]}} [2026-06-17 05:06:39.895] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:06:39.895] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:05:49Z", "value" => "0"} [2026-06-17 05:06:39.895] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:06:39.923] [DEBUG] QUERY OK db=27.0ms queue=1.3ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:05:49Z", "0", "cpu", 39048, ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:06:39.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303466, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:05:49Z", message: "CPU usage percentage", status_log_id: 39048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]}} [2026-06-17 05:06:39.925] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:05:49Z", "value" => "1.0.0"} [2026-06-17 05:06:39.937] [DEBUG] QUERY OK db=12.2ms queue=0.2ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:05:49Z", "1.0.0", "parameter_config", 39048, ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:06:39.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303467, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:05:49Z", message: "Current parameters version", status_log_id: 39048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]}} [2026-06-17 05:06:39.938] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:05:49Z", "value" => "1.0.1"} [2026-06-17 05:06:39.953] [DEBUG] QUERY OK db=15.0ms idle=8.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:05:49Z", "1.0.1", "emv_config", 39048, ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:06:39.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303468, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:05:49Z", message: "Current EMV config version", status_log_id: 39048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]}} [2026-06-17 05:06:39.954] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:05:49Z", "value" => ""} [2026-06-17 05:06:39.982] [DEBUG] QUERY OK db=27.6ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:05:49Z", "keys_config", 39048, ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:06:39.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303469, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:05:49Z", message: "Current keys config version", status_log_id: 39048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]}} [2026-06-17 05:06:39.982] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:05:49Z", "value" => ""} [2026-06-17 05:06:40.010] [DEBUG] QUERY OK db=27.4ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:05:49Z", "application", 39048, ~N[2026-06-17 05:06:39], ~N[2026-06-17 05:06:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:06:40.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303470, itemkey: "application", value: nil, timestamp: "2026-06-17T05:05:49Z", message: "Current application version", status_log_id: 39048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:06:39], updated_at: ~N[2026-06-17 05:06:39]}} [2026-06-17 05:06:40.011] [WARN ] Unexpected async result [2026-06-17 05:06:40.011] [WARN ] Unexpected async result [2026-06-17 05:06:40.013] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=29.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:06:40.019] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:33:26.578] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 26m, MIS in 1h 26m [2026-06-17 05:33:26.631] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 05:33:26.659] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 05:33:29.143] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 05:33:29.144] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 05:33:29.146] [INFO ] Building initial filter cache... [2026-06-17 05:33:29.180] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=2.2ms idle=1221.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-06-17 05:33:29.195] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=1.1ms idle=976.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-06-17 05:33:29.195] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 05:33:29.351] [INFO ] Device phoenix_client_Sham connected [2026-06-17 05:33:29.371] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 05:33:29.407] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 05:33:31.097] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 42µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "A2cwAVsZIUkAcT0kOwZgNTgvbxRAH34i30Zq9mM07HQUqO8PwHXwyS9J", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "1", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 05:33:32.569] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 05:33:32.769] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=1.3ms idle=1716.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 05:33:32.697601Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 05:33:32.919] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.8ms idle=1670.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 05:33:32.939] [DEBUG] QUERY OK source="app_packages" db=0.4ms queue=0.7ms idle=684.6ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 05:33:32.998] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=7.7ms idle=70.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 05:33:33.022] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.6ms idle=81.5ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 05:33:33.022] [DEBUG] Replied in 492ms [2026-06-17 05:33:33.047] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 05:33:33.048] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=48.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 05:33:33.049] [DEBUG] Replied in 1ms [2026-06-17 05:35:19.911] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 05:35:19.911] [INFO ] Incoming JSON payload: {"oid":"06b6dd2f-b18f-4402-b344-ac66d7c07d67","sn":"98251226730001","uploadTime":"2026-06-17T13:38:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"ram_free_mb","value":"910","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T13:38:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:38:33Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 05:35:19.913] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "06b6dd2f-b18f-4402-b344-ac66d7c07d67", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:38:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:38:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:38:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:38:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:38:33Z", "value" => "910"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:38:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:38:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:38:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:38:33Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:38:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:38:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T13:38:33Z", "vendor" => "morefun"} [2026-06-17 05:35:19.913] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 05:35:19.936] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 05:35:19.938] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 05:35:19.957] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=4.1ms idle=1280.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:35:19.961] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=3.6ms idle=281.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-06-17 05:35:19.961] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 05:35:19.965] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms queue=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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:35:19.996] [INFO ] Terminal updated: 98251226730001 [2026-06-17 05:35:20.039] [DEBUG] QUERY OK source="tms_terminals" db=20.8ms queue=0.8ms idle=35.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:35:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:35:20.051] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 05:35:20.054] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.5ms idle=86.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:627 [2026-06-17 05:35:20.089] [DEBUG] QUERY OK source="tms_terminals" db=34.0ms idle=36.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:35:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:35:20.141] [DEBUG] QUERY OK db=13.5ms queue=5.4ms idle=68.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "06b6dd2f-b18f-4402-b344-ac66d7c07d67", "2026-06-17T13:38:33Z", ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:35:20.171] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39051, oid: "06b6dd2f-b18f-4402-b344-ac66d7c07d67", upload_time: "2026-06-17T13:38:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]} [2026-06-17 05:35:20.172] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:38:33Z", "value" => "morefun"} [2026-06-17 05:35:20.190] [DEBUG] QUERY OK db=17.5ms queue=0.3ms idle=83.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "morefun", "vendor", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303487, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.191] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:38:33Z", "value" => "kiosk_launcher"} [2026-06-17 05:35:20.229] [DEBUG] QUERY OK db=33.0ms queue=0.5ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "kiosk_launcher", "model", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303488, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.229] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:38:33Z", "value" => "1.0"} [2026-06-17 05:35:20.256] [DEBUG] QUERY OK db=26.2ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "1.0", "app_version", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303489, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.257] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:38:33Z", "value" => "13"} [2026-06-17 05:35:20.274] [DEBUG] QUERY OK db=16.1ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "13", "android_version", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.274] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303490, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.274] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:38:33Z", "value" => "910"} [2026-06-17 05:35:20.303] [DEBUG] QUERY OK db=27.9ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "910", "ram_free_mb", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303491, itemkey: "ram_free_mb", value: "910", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.305] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:38:33Z", "value" => "WIFI"} [2026-06-17 05:35:20.342] [DEBUG] QUERY OK db=35.4ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "WIFI", "network_type", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303492, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.342] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:38:33Z", "value" => "true"} [2026-06-17 05:35:20.364] [DEBUG] QUERY OK db=21.1ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "true", "kiosk_active", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303493, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.365] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:38:33Z", "value" => ""} [2026-06-17 05:35:20.383] [DEBUG] QUERY OK db=16.9ms queue=1.1ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:38:33Z", "sim_operator", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303494, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.384] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"} [2026-06-17 05:35:20.417] [DEBUG] QUERY OK db=32.4ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "UNKNOWN", "sim_number", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303495, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.417] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"} [2026-06-17 05:35:20.453] [DEBUG] QUERY OK db=34.8ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "UNKNOWN", "sim_iccid", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303496, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.453] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"} [2026-06-17 05:35:20.470] [DEBUG] QUERY OK db=16.7ms idle=4.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "UNKNOWN", "sim_imsi", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303497, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.471] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"} [2026-06-17 05:35:20.499] [DEBUG] QUERY OK db=27.5ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "UNKNOWN", "sim_iccid2", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303498, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.499] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:38:33Z", "value" => "UNKNOWN"} [2026-06-17 05:35:20.525] [DEBUG] QUERY OK db=24.9ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "UNKNOWN", "sim_imsi2", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303499, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.525] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:38:33Z", "value" => "5"} [2026-06-17 05:35:20.547] [DEBUG] QUERY OK db=21.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "5", "data_usage_mb", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303500, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.547] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:38:33Z", "value" => "0"} [2026-06-17 05:35:20.580] [DEBUG] QUERY OK db=32.2ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "0", "mobile_data_mb", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303501, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.580] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:38:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 05:35:20.648] [DEBUG] QUERY OK db=66.4ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:38:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39051, ~N[2026-06-17 05:35:20], ~N[2026-06-17 05:35:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:20.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303502, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T13:38:33Z", message: nil, status_log_id: 39051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:20], updated_at: ~N[2026-06-17 05:35:20]}} [2026-06-17 05:35:20.650] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:35:20.655] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:35:29.487] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:35:29.487] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:34:39Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:34:39Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:34:39Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:34:39Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:34:39Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:34:39Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:34:39Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:34:39Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:34:39Z","vendor":"MoreFun"} [2026-06-17 05:35:29.488] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:34:39Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:34:39Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:34:39Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:34:39Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:34:39Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:34:39Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:34:39Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:34:39Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:34:39Z", "vendor" => "MoreFun"} [2026-06-17 05:35:29.488] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:35:29.488] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:35:29.488] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:35:29.496] [DEBUG] QUERY OK source="parameter_templates" db=7.7ms queue=0.1ms idle=1492.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-06-17 05:35:29.499] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.1ms idle=795.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:35:29.511] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=0.6ms idle=14.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-06-17 05:35:29.519] [DEBUG] QUERY OK source="parameter_definitions" db=1.4ms queue=0.9ms idle=18.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-06-17 05:35:29.532] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.4ms idle=19.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:35:29.561] [DEBUG] QUERY OK source="pos_merchant" db=0.7ms queue=24.2ms idle=17.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:35:29.567] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=1574.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 ["372916040000000"] [2026-06-17 05:35:29.567] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:35:29.580] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms queue=1.3ms idle=45.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:35:29.584] [DEBUG] QUERY OK source="address" db=0.3ms queue=0.4ms idle=22.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:35:29.585] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:35:29.595] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:35:29.636] [DEBUG] QUERY OK db=31.4ms queue=0.6ms idle=23.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "501695237d638f99b3a37f60a9e44f3a975e680572d7348c091998ac0a709fc3", 1827, 938, ~U[2026-06-17 05:35:29Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:35:29.636] [INFO ] AutoPushService: Created push log 29635 for MF919 params.zip [2026-06-17 05:35:29.640] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1827, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:35:29.640] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:35:29.645] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:35:29.651] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.8ms idle=65.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-06-17 05:35:29.662] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:35:29.677] [DEBUG] QUERY OK db=13.6ms queue=0.4ms idle=27.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c7b6f3cca7f9ac6c9449b8cd0f725f1fcde85eef95d67df0342dea942b0564f9", 1955, 17947, ~U[2026-06-17 05:35:29Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:35:29.677] [INFO ] AutoPushService: Created push log 29636 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:35:29.678] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1955, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:35:29.678] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:35:29.678] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:35:29.681] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=27.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-06-17 05:35:29.689] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:35:29.691] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=12.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:35:29.692] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:35:29.776] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:35:29.776] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:35:29.776] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:35:29.778] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=85.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-06-17 05:35:29.779] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:35:29.779] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:35:29.780] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=71.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:35:29.780] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:35:29.796] [DEBUG] QUERY OK source="tms_terminals" db=14.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:35:29], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:35:29.798] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.5ms idle=16.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-06-17 05:35:29.799] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:35:29.799] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:35:29.800] [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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:35:29.833] [DEBUG] QUERY OK source="tms_terminals" db=33.2ms idle=0.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:35:29], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:35:29.859] [DEBUG] QUERY OK db=25.1ms idle=33.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:34:39Z", ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:35:29.859] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39052, oid: "organization_id", upload_time: "2026-06-17T05:34:39Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:29], updated_at: ~N[2026-06-17 05:35:29]} [2026-06-17 05:35:29.859] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:34:39Z", "value" => "online"} [2026-06-17 05:35:29.874] [DEBUG] QUERY OK db=13.0ms queue=1.3ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:34:39Z", "online", "status", 39052, ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:29.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303503, itemkey: "status", value: "online", timestamp: "2026-06-17T05:34:39Z", message: "Terminal status update", status_log_id: 39052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:29], updated_at: ~N[2026-06-17 05:35:29]}} [2026-06-17 05:35:29.875] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:35:29.876] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.6ms idle=16.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:35:29], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 05:35:29.876] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:34:39Z", "value" => "54"} [2026-06-17 05:35:29.877] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:35:29.889] [DEBUG] QUERY OK db=12.5ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:34:39Z", "54", "battery", 39052, ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:29.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303504, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:34:39Z", message: "Battery level", status_log_id: 39052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:29], updated_at: ~N[2026-06-17 05:35:29]}} [2026-06-17 05:35:29.890] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:34:39Z", "value" => "online"} [2026-06-17 05:35:29.922] [DEBUG] QUERY OK db=29.9ms queue=0.4ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:34:39Z", "online", "network", 39052, ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:29.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303505, itemkey: "network", value: "online", timestamp: "2026-06-17T05:34:39Z", message: "Network connectivity", status_log_id: 39052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:29], updated_at: ~N[2026-06-17 05:35:29]}} [2026-06-17 05:35:29.922] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:35:29.923] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=33.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:35:29], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 05:35:29.923] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:34:39Z", "value" => "0"} [2026-06-17 05:35:29.924] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:35:29.947] [DEBUG] QUERY OK db=23.3ms idle=2.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:34:39Z", "0", "cpu", 39052, ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:29.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303506, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:34:39Z", message: "CPU usage percentage", status_log_id: 39052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:29], updated_at: ~N[2026-06-17 05:35:29]}} [2026-06-17 05:35:29.947] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:34:39Z", "value" => "1.0.0"} [2026-06-17 05:35:29.967] [DEBUG] QUERY OK db=18.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:34:39Z", "1.0.0", "parameter_config", 39052, ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:29.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303507, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:34:39Z", message: "Current parameters version", status_log_id: 39052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:29], updated_at: ~N[2026-06-17 05:35:29]}} [2026-06-17 05:35:29.967] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:34:39Z", "value" => "1.0.1"} [2026-06-17 05:35:29.979] [DEBUG] QUERY OK db=11.6ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:34:39Z", "1.0.1", "emv_config", 39052, ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:29.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303508, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:34:39Z", message: "Current EMV config version", status_log_id: 39052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:29], updated_at: ~N[2026-06-17 05:35:29]}} [2026-06-17 05:35:29.979] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:34:39Z", "value" => ""} [2026-06-17 05:35:30.038] [DEBUG] QUERY OK db=16.6ms queue=40.6ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:34:39Z", "keys_config", 39052, ~N[2026-06-17 05:35:29], ~N[2026-06-17 05:35:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:30.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303509, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:34:39Z", message: "Current keys config version", status_log_id: 39052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:29], updated_at: ~N[2026-06-17 05:35:29]}} [2026-06-17 05:35:30.038] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:34:39Z", "value" => ""} [2026-06-17 05:35:30.109] [DEBUG] QUERY OK db=28.2ms queue=41.5ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:34:39Z", "application", 39052, ~N[2026-06-17 05:35:30], ~N[2026-06-17 05:35:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:35:30.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303510, itemkey: "application", value: nil, timestamp: "2026-06-17T05:34:39Z", message: "Current application version", status_log_id: 39052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:35:30], updated_at: ~N[2026-06-17 05:35:30]}} [2026-06-17 05:35:30.125] [DEBUG] QUERY OK source="tms_terminals" db=15.6ms idle=71.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:35:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 05:35:30.128] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=16.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:35:30.139] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:35:30.147] [WARN ] Unexpected async result [2026-06-17 05:35:30.147] [WARN ] Unexpected async result [2026-06-17 05:38:29.125] [INFO ] Running offline device check... [2026-06-17 05:38:29.126] [INFO ] Starting offline device check... [2026-06-17 05:38:29.128] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.2ms idle=751.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:677 [2026-06-17 05:38:29.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=0.3ms idle=109.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:688 [2026-06-17 05:38:29.138] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.141] [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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.142] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.142] [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:688 [2026-06-17 05:38:29.143] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.144] [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:688 [2026-06-17 05:38:29.144] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.145] [INFO ] Starting scheduled rule validation [2026-06-17 05:38:29.145] [DEBUG] Validating missing assignments [2026-06-17 05:38:29.146] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.147] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms queue=0.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.154] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.158] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.159] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.7ms idle=3.9ms 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-06-17 05:38:29.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.162] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=0.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.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-06-17 05:38:29.163] [DEBUG] Re-applied 0 rules during validation [2026-06-17 05:38:29.163] [DEBUG] Validating invalid assignments [2026-06-17 05:38:29.163] [DEBUG] Validating rule consistency [2026-06-17 05:38:29.163] [DEBUG] Updating group terminal counts [2026-06-17 05:38:29.164] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.164] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.4ms idle=1.5ms 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-06-17 05:38:29.165] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.166] [DEBUG] QUERY OK source="terminal_groups" db=0.5ms queue=0.8ms idle=0.1ms 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-06-17 05:38:29.171] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.6ms idle=4.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-06-17 05:38:29.173] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=1.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-06-17 05:38:29.175] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms 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-06-17 05:38:29.175] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms queue=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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.177] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms queue=0.6ms idle=0.4ms 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-06-17 05:38:29.177] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.178] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.178] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.9ms idle=0.2ms 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-06-17 05:38:29.179] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.2ms idle=0.2ms 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-06-17 05:38:29.179] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 05:38:29.179] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.179] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 05:38:29.180] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.192] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.193] [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:688 [2026-06-17 05:38:29.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.206] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.208] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.211] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.212] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.213] [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:688 [2026-06-17 05:38:29.214] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.214] [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:688 [2026-06-17 05:38:29.216] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.218] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 05:38:29.218] [INFO ] Offline device check completed. Found 37 offline devices, updated 0 statuses. [2026-06-17 05:38:29.218] [INFO ] Offline device check completed successfully [2026-06-17 05:39:33.629] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:39:33.629] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:38:43Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:38:43Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:38:43Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:38:43Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:38:43Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:38:43Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:38:43Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:38:43Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:38:43Z","vendor":"MoreFun"} [2026-06-17 05:39:33.629] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:38:43Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:38:43Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:38:43Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:38:43Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:38:43Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:38:43Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:38:43Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:38:43Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:38:43Z", "vendor" => "MoreFun"} [2026-06-17 05:39:33.629] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 05:39:33.629] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:39:33.629] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:39:33.631] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1064.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-06-17 05:39:33.632] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:39:33.633] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=1.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-06-17 05:39:33.634] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.3ms 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-06-17 05:39:33.635] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=1.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:39:33.677] [DEBUG] QUERY OK source="pos_merchant" db=41.4ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:39:33.678] [DEBUG] QUERY OK db=0.6ms queue=0.4ms idle=1657.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 ["372916040000000"] [2026-06-17 05:39:33.678] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:39:33.679] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=43.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:39:33.681] [DEBUG] QUERY OK source="address" db=0.8ms queue=0.1ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:39:33.681] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:39:33.682] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:39:33.704] [DEBUG] QUERY OK db=20.4ms queue=0.3ms idle=3.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6f379a8eae5ab9e6a1b23290990ce4f9de6afe100d6f68daa4d7837d61d4f665", 2147, 938, ~U[2026-06-17 05:39:33Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:39:33], ~N[2026-06-17 05:39:33]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:39:33.704] [INFO ] AutoPushService: Created push log 29637 for MF919 params.zip [2026-06-17 05:39:33.704] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2147, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:39:33.704] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:39:33.705] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:39:33.706] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=24.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-06-17 05:39:33.710] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:39:33.737] [DEBUG] QUERY OK db=25.8ms queue=0.6ms idle=7.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e863299954d892340f65e756c778643be104956b19ddde7b33f46a18f8c09a34", 2211, 17947, ~U[2026-06-17 05:39:33Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:39:33], ~N[2026-06-17 05:39:33]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:39:33.738] [INFO ] AutoPushService: Created push log 29638 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:39:33.738] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2211, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:39:33.738] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:39:33.738] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:39:33.739] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=32.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-06-17 05:39:33.739] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:39:33.740] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:39:33.740] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:39:33.742] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:39:33.742] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:39:33.742] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:39:33.743] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=3.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-06-17 05:39:33.744] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:39:33.744] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:39:33.745] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:39:33.745] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:39:33.811] [DEBUG] QUERY OK source="tms_terminals" db=24.8ms queue=41.0ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", nil, nil, ~N[2026-06-17 05:39:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:39:33.811] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:39:33.812] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=66.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:39:33.877] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms queue=40.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:39:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:39:33.906] [DEBUG] QUERY OK db=28.5ms idle=65.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:38:43Z", ~N[2026-06-17 05:39:33], ~N[2026-06-17 05:39:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:39:33.906] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39053, oid: "organization_id", upload_time: "2026-06-17T05:38:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:33], updated_at: ~N[2026-06-17 05:39:33]} [2026-06-17 05:39:33.907] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:38:43Z", "value" => "online"} [2026-06-17 05:39:33.930] [DEBUG] QUERY OK db=23.2ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:38:43Z", "online", "status", 39053, ~N[2026-06-17 05:39:33], ~N[2026-06-17 05:39:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:39:33.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303511, itemkey: "status", value: "online", timestamp: "2026-06-17T05:38:43Z", message: "Terminal status update", status_log_id: 39053, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:33], updated_at: ~N[2026-06-17 05:39:33]}} [2026-06-17 05:39:33.930] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:39:33.931] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:38:43Z", "value" => "54"} [2026-06-17 05:39:33.931] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:39:33.960] [DEBUG] QUERY OK db=28.2ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:38:43Z", "54", "battery", 39053, ~N[2026-06-17 05:39:33], ~N[2026-06-17 05:39:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:39:33.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303512, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:38:43Z", message: "Battery level", status_log_id: 39053, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:33], updated_at: ~N[2026-06-17 05:39:33]}} [2026-06-17 05:39:33.960] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:38:43Z", "value" => "online"} [2026-06-17 05:39:33.981] [DEBUG] QUERY OK db=20.3ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:38:43Z", "online", "network", 39053, ~N[2026-06-17 05:39:33], ~N[2026-06-17 05:39:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:39:33.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303513, itemkey: "network", value: "online", timestamp: "2026-06-17T05:38:43Z", message: "Network connectivity", status_log_id: 39053, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:33], updated_at: ~N[2026-06-17 05:39:33]}} [2026-06-17 05:39:33.981] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:39:33.982] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:38:43Z", "value" => "0"} [2026-06-17 05:39:33.982] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:39:34.017] [DEBUG] QUERY OK db=35.2ms queue=0.2ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:38:43Z", "0", "cpu", 39053, ~N[2026-06-17 05:39:33], ~N[2026-06-17 05:39:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:39:34.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303514, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:38:43Z", message: "CPU usage percentage", status_log_id: 39053, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:33], updated_at: ~N[2026-06-17 05:39:33]}} [2026-06-17 05:39:34.018] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:38:43Z", "value" => ""} [2026-06-17 05:39:34.052] [DEBUG] QUERY OK db=33.8ms queue=0.1ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:38:43Z", "parameter_config", 39053, ~N[2026-06-17 05:39:34], ~N[2026-06-17 05:39:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:39:34.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303515, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T05:38:43Z", message: "Current parameters version", status_log_id: 39053, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:34], updated_at: ~N[2026-06-17 05:39:34]}} [2026-06-17 05:39:34.052] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:38:43Z", "value" => ""} [2026-06-17 05:39:34.085] [DEBUG] QUERY OK db=32.0ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:38:43Z", "emv_config", 39053, ~N[2026-06-17 05:39:34], ~N[2026-06-17 05:39:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:39:34.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303516, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T05:38:43Z", message: "Current EMV config version", status_log_id: 39053, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:34], updated_at: ~N[2026-06-17 05:39:34]}} [2026-06-17 05:39:34.086] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:38:43Z", "value" => ""} [2026-06-17 05:39:34.106] [DEBUG] QUERY OK db=20.1ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:38:43Z", "keys_config", 39053, ~N[2026-06-17 05:39:34], ~N[2026-06-17 05:39:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:39:34.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303517, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:38:43Z", message: "Current keys config version", status_log_id: 39053, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:34], updated_at: ~N[2026-06-17 05:39:34]}} [2026-06-17 05:39:34.106] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:38:43Z", "value" => ""} [2026-06-17 05:39:34.137] [DEBUG] QUERY OK db=30.3ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:38:43Z", "application", 39053, ~N[2026-06-17 05:39:34], ~N[2026-06-17 05:39:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:39:34.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303518, itemkey: "application", value: nil, timestamp: "2026-06-17T05:38:43Z", message: "Current application version", status_log_id: 39053, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:39:34], updated_at: ~N[2026-06-17 05:39:34]}} [2026-06-17 05:39:34.138] [WARN ] Unexpected async result [2026-06-17 05:39:34.138] [WARN ] Unexpected async result [2026-06-17 05:39:34.140] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=32.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:39:34.143] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:40:59.027] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:40:59.027] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:40:09Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:40:09Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:40:09Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:40:09Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:40:09Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:40:09Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:40:09Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:40:09Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:40:09Z","vendor":"MoreFun"} [2026-06-17 05:40:59.028] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:40:09Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:40:09Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:40:09Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:40:09Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:40:09Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:40:09Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:40:09Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:40:09Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:40:09Z", "vendor" => "MoreFun"} [2026-06-17 05:40:59.028] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:40:59.029] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:40:59.029] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:40:59.030] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=996.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-06-17 05:40:59.031] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=174.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:40:59.032] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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-06-17 05:40:59.034] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.8ms idle=1.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-06-17 05:40:59.036] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=3.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:40:59.075] [DEBUG] QUERY OK source="pos_merchant" db=38.5ms idle=2.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:40:59.076] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=44.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 ["372916040000000"] [2026-06-17 05:40:59.076] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:40:59.077] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.1ms idle=41.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:40:59.078] [DEBUG] QUERY OK source="address" db=0.5ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:40:59.078] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:40:59.080] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:40:59.122] [DEBUG] QUERY OK db=40.7ms idle=3.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "aab2f17165efb2f463d9cff9cc0f3ccd4cc35f3fe5f93089a1aa88417e5b1976", 2307, 938, ~U[2026-06-17 05:40:59Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:40:59.123] [INFO ] AutoPushService: Created push log 29639 for MF919 params.zip [2026-06-17 05:40:59.123] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2307, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:40:59.123] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:40:59.123] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:40:59.126] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 05:40:59.131] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:40:59.151] [DEBUG] QUERY OK db=18.3ms idle=10.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "16a750acc043b6c83aeb2d37a97e0fc537dff6f996eee5a4fb2cab42b8d5eea4", 5250, 17947, ~U[2026-06-17 05:40:59Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:40:59.151] [INFO ] AutoPushService: Created push log 29640 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:40:59.152] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 5250, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:40:59.152] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:40:59.153] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:40:59.155] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms queue=0.2ms idle=27.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-06-17 05:40:59.155] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:40:59.158] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=4.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:40:59.158] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:40:59.160] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:40:59.161] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:40:59.161] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:40:59.162] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 05:40:59.162] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:40:59.162] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:40:59.163] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:40:59.167] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:40:59.220] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms queue=42.3ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "1.0.1", "1.0.0", ~N[2026-06-17 05:40:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:40:59.222] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=57.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-06-17 05:40:59.223] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.1ms 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-06-17 05:40:59.223] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:40:59.223] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:40:59.290] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms queue=41.6ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:40:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:40:59.329] [DEBUG] QUERY OK db=37.4ms idle=67.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:40:09Z", ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:40:59.329] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39054, oid: "organization_id", upload_time: "2026-06-17T05:40:09Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]} [2026-06-17 05:40:59.329] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:40:09Z", "value" => "online"} [2026-06-17 05:40:59.341] [DEBUG] QUERY OK db=11.0ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:40:09Z", "online", "status", 39054, ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:40:59.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303519, itemkey: "status", value: "online", timestamp: "2026-06-17T05:40:09Z", message: "Terminal status update", status_log_id: 39054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]}} [2026-06-17 05:40:59.341] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:40:59.341] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:40:09Z", "value" => "54"} [2026-06-17 05:40:59.341] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:40:59.358] [DEBUG] QUERY OK db=16.3ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:40:09Z", "54", "battery", 39054, ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:40:59.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303520, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:40:09Z", message: "Battery level", status_log_id: 39054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]}} [2026-06-17 05:40:59.358] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:40:09Z", "value" => "online"} [2026-06-17 05:40:59.392] [DEBUG] QUERY OK db=33.0ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:40:09Z", "online", "network", 39054, ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:40:59.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303521, itemkey: "network", value: "online", timestamp: "2026-06-17T05:40:09Z", message: "Network connectivity", status_log_id: 39054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]}} [2026-06-17 05:40:59.393] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:40:59.393] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:40:09Z", "value" => "0"} [2026-06-17 05:40:59.393] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:40:59.417] [DEBUG] QUERY OK db=23.0ms queue=0.8ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:40:09Z", "0", "cpu", 39054, ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:40:59.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303522, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:40:09Z", message: "CPU usage percentage", status_log_id: 39054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]}} [2026-06-17 05:40:59.417] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:40:09Z", "value" => "1.0.0"} [2026-06-17 05:40:59.435] [DEBUG] QUERY OK db=17.4ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:40:09Z", "1.0.0", "parameter_config", 39054, ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:40:59.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303523, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:40:09Z", message: "Current parameters version", status_log_id: 39054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]}} [2026-06-17 05:40:59.436] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:40:09Z", "value" => "1.0.1"} [2026-06-17 05:40:59.447] [DEBUG] QUERY OK db=10.8ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:40:09Z", "1.0.1", "emv_config", 39054, ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:40:59.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303524, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:40:09Z", message: "Current EMV config version", status_log_id: 39054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]}} [2026-06-17 05:40:59.447] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:40:09Z", "value" => ""} [2026-06-17 05:40:59.468] [DEBUG] QUERY OK db=20.3ms queue=0.1ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:40:09Z", "keys_config", 39054, ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:40:59.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303525, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:40:09Z", message: "Current keys config version", status_log_id: 39054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]}} [2026-06-17 05:40:59.468] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:40:09Z", "value" => ""} [2026-06-17 05:40:59.493] [DEBUG] QUERY OK db=24.0ms queue=0.1ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:40:09Z", "application", 39054, ~N[2026-06-17 05:40:59], ~N[2026-06-17 05:40:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:40:59.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303526, itemkey: "application", value: nil, timestamp: "2026-06-17T05:40:09Z", message: "Current application version", status_log_id: 39054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:40:59], updated_at: ~N[2026-06-17 05:40:59]}} [2026-06-17 05:40:59.494] [WARN ] Unexpected async result [2026-06-17 05:40:59.495] [WARN ] Unexpected async result [2026-06-17 05:40:59.495] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=26.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:40:59.501] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:41:11.427] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:41:11.428] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:40:21Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:40:21Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:40:21Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:40:21Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:40:21Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:40:21Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:40:21Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:40:21Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:40:21Z","vendor":"MoreFun"} [2026-06-17 05:41:11.428] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:40:21Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:40:21Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:40:21Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:40:21Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:40:21Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:40:21Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:40:21Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:40:21Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:40:21Z", "vendor" => "MoreFun"} [2026-06-17 05:41:11.428] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:41:11.428] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:41:11.429] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:41:11.431] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1396.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:41:11.432] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=533.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:41:11.437] [DEBUG] QUERY OK source="parameter_template_values" db=4.6ms queue=0.1ms 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-06-17 05:41:11.440] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=0.9ms idle=5.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-06-17 05:41:11.441] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=3.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:41:11.481] [DEBUG] QUERY OK source="pos_merchant" db=39.2ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:41:11.482] [DEBUG] QUERY OK db=0.8ms queue=0.8ms idle=450.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 ["372916040000000"] [2026-06-17 05:41:11.483] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:41:11.484] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:41:11.484] [DEBUG] QUERY OK source="address" db=0.6ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:41:11.485] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:41:11.486] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:41:11.522] [DEBUG] QUERY OK db=34.8ms idle=3.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "634b96aceecb58eb7cfe3ebf44e2ea41042055f7dc3e681780cbcba441be10c3", 5378, 938, ~U[2026-06-17 05:41:11Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:41:11.523] [INFO ] AutoPushService: Created push log 29641 for MF919 params.zip [2026-06-17 05:41:11.523] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5378, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:41:11.523] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:41:11.523] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:41:11.525] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=39.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-06-17 05:41:11.528] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:41:11.557] [DEBUG] QUERY OK db=25.0ms queue=1.5ms idle=8.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "94d43a83a7d7fbd4b206d7baefd31ac365392f75787b22d779eab9343a1e5ed1", 5442, 17947, ~U[2026-06-17 05:41:11Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:41:11.557] [INFO ] AutoPushService: Created push log 29642 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:41:11.557] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 5442, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:41:11.558] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:41:11.558] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:41:11.559] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=33.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-06-17 05:41:11.559] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:41:11.560] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:41:11.560] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:41:11.562] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:41:11.562] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:41:11.562] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:41:11.563] [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-06-17 05:41:11.563] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:41:11.563] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:41:11.564] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:41:11.565] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:41:11.580] [DEBUG] QUERY OK source="tms_terminals" db=14.9ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:41:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:41:11.581] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=16.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-06-17 05:41:11.582] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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-06-17 05:41:11.582] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:41:11.583] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:41:11.616] [DEBUG] QUERY OK source="tms_terminals" db=32.0ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:41:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:41:11.666] [DEBUG] QUERY OK db=49.2ms queue=0.3ms idle=32.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:40:21Z", ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:41:11.667] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39055, oid: "organization_id", upload_time: "2026-06-17T05:40:21Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]} [2026-06-17 05:41:11.667] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:40:21Z", "value" => "online"} [2026-06-17 05:41:11.708] [DEBUG] QUERY OK db=40.7ms queue=0.1ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:40:21Z", "online", "status", 39055, ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:41:11.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303527, itemkey: "status", value: "online", timestamp: "2026-06-17T05:40:21Z", message: "Terminal status update", status_log_id: 39055, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]}} [2026-06-17 05:41:11.709] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:41:11.709] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:41:11.709] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:40:21Z", "value" => "54"} [2026-06-17 05:41:11.753] [DEBUG] QUERY OK db=43.0ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:40:21Z", "54", "battery", 39055, ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:41:11.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303528, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:40:21Z", message: "Battery level", status_log_id: 39055, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]}} [2026-06-17 05:41:11.753] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:40:21Z", "value" => "online"} [2026-06-17 05:41:11.773] [DEBUG] QUERY OK db=18.8ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:40:21Z", "online", "network", 39055, ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:41:11.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303529, itemkey: "network", value: "online", timestamp: "2026-06-17T05:40:21Z", message: "Network connectivity", status_log_id: 39055, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]}} [2026-06-17 05:41:11.773] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:41:11.774] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 05:41:11.774] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:40:21Z", "value" => "0"} [2026-06-17 05:41:11.792] [DEBUG] QUERY OK db=17.6ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:40:21Z", "0", "cpu", 39055, ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:41:11.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303530, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:40:21Z", message: "CPU usage percentage", status_log_id: 39055, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]}} [2026-06-17 05:41:11.793] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:40:21Z", "value" => "1.0.0"} [2026-06-17 05:41:11.817] [DEBUG] QUERY OK db=23.6ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:40:21Z", "1.0.0", "parameter_config", 39055, ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:41:11.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303531, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:40:21Z", message: "Current parameters version", status_log_id: 39055, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]}} [2026-06-17 05:41:11.817] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:40:21Z", "value" => "1.0.1"} [2026-06-17 05:41:11.855] [DEBUG] QUERY OK db=36.6ms queue=0.2ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:40:21Z", "1.0.1", "emv_config", 39055, ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:41:11.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303532, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:40:21Z", message: "Current EMV config version", status_log_id: 39055, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]}} [2026-06-17 05:41:11.856] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:40:21Z", "value" => ""} [2026-06-17 05:41:11.886] [DEBUG] QUERY OK db=30.5ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:40:21Z", "keys_config", 39055, ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:41:11.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303533, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:40:21Z", message: "Current keys config version", status_log_id: 39055, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]}} [2026-06-17 05:41:11.887] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:40:21Z", "value" => ""} [2026-06-17 05:41:11.901] [DEBUG] QUERY OK db=14.1ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:40:21Z", "application", 39055, ~N[2026-06-17 05:41:11], ~N[2026-06-17 05:41:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:41:11.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303534, itemkey: "application", value: nil, timestamp: "2026-06-17T05:40:21Z", message: "Current application version", status_log_id: 39055, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:41:11], updated_at: ~N[2026-06-17 05:41:11]}} [2026-06-17 05:41:11.902] [WARN ] Unexpected async result [2026-06-17 05:41:11.902] [WARN ] Unexpected async result [2026-06-17 05:41:11.903] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 05:41:11.907] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 05:57:08.147] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 2m, MIS in 1h 2m [2026-06-17 05:57:08.196] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 05:57:08.213] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 05:57:09.686] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 05:57:09.686] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 05:57:09.689] [INFO ] Building initial filter cache... [2026-06-17 05:57:09.704] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.7ms idle=861.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-06-17 05:57:09.716] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=0.5ms idle=53.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-06-17 05:57:09.716] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 05:57:09.786] [INFO ] Device phoenix_client_Sham connected [2026-06-17 05:57:09.806] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 05:57:09.815] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 05:57:40.839] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:57:40.839] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:56:50Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:56:50Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:56:50Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:56:50Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:56:50Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:56:50Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:56:50Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:56:50Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:56:50Z","vendor":"MoreFun"} [2026-06-17 05:57:40.848] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:56:50Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:56:50Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:56:50Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:56:50Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:56:50Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:56:50Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:56:50Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:56:50Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:56:50Z", "vendor" => "MoreFun"} [2026-06-17 05:57:40.849] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 05:57:40.856] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:57:40.856] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:57:40.859] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.6ms idle=1191.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-06-17 05:57:40.862] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.5ms idle=906.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:57:40.871] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=0.5ms idle=7.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-06-17 05:57:40.884] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.6ms idle=20.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-06-17 05:57:40.892] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=1.1ms idle=22.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:57:40.925] [DEBUG] QUERY OK source="pos_merchant" db=0.2ms queue=27.0ms idle=14.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:57:40.931] [DEBUG] QUERY OK db=1.5ms queue=1.2ms idle=1261.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 ["372916040000000"] [2026-06-17 05:57:40.932] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:57:40.937] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=1.5ms idle=43.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:57:40.944] [DEBUG] QUERY OK source="address" db=1.4ms queue=0.8ms idle=16.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:57:40.944] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:57:40.957] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:57:40.994] [DEBUG] QUERY OK db=10.0ms queue=0.5ms idle=32.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", "7354fc1e38b8837b35e9cd42ad584a57416e0adfacd1314eb7283256718a7662", 4162, 938, ~U[2026-06-17 05:57:40Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 05:57:40], ~N[2026-06-17 05:57:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:57:40.994] [INFO ] AutoPushService: Created push log 29650 for MF919 params.zip [2026-06-17 05:57:40.999] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 4162, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:57:40.999] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:57:41.003] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:57:41.013] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.9ms idle=56.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-06-17 05:57:41.023] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:57:41.030] [DEBUG] QUERY OK db=4.9ms queue=0.6ms idle=37.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", "5342e355bb1cd98b49441f8bc7c56b810b27d96c2a64433d2c77190cea1aae2c", 4290, 17947, ~U[2026-06-17 05:57:41Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:57:41.030] [INFO ] AutoPushService: Created push log 29651 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:57:41.030] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 4290, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:57:41.030] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:57:41.031] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:57:41.033] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=18.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-06-17 05:57:41.040] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:57:41.042] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=11.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:57:41.042] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:57:41.093] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:57:41.093] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:57:41.093] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:57:41.094] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=60.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-06-17 05:57:41.094] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:57:41.095] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:57:41.113] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=69.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:57:41.118] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:57:41.126] [DEBUG] QUERY OK source="tms_terminals" db=7.2ms queue=0.4ms idle=24.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:57:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:57:41.130] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:57:41.131] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=17.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:57:41.137] [DEBUG] QUERY OK source="tms_terminals" db=5.1ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:57:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:57:41.150] [DEBUG] QUERY OK db=5.2ms queue=1.0ms idle=12.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:56:50Z", ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:57:41.158] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39064, oid: "organization_id", upload_time: "2026-06-17T05:56:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]} [2026-06-17 05:57:41.158] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:56:50Z", "value" => "online"} [2026-06-17 05:57:41.164] [DEBUG] QUERY OK db=4.6ms queue=0.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-06-17T05:56:50Z", "online", "status", 39064, ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:57:41.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303607, itemkey: "status", value: "online", timestamp: "2026-06-17T05:56:50Z", message: "Terminal status update", status_log_id: 39064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]}} [2026-06-17 05:57:41.164] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:57:41.165] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:56:50Z", "value" => "54"} [2026-06-17 05:57:41.172] [DEBUG] QUERY OK db=5.1ms queue=0.6ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:56:50Z", "54", "battery", 39064, ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:57:41.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303608, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:56:50Z", message: "Battery level", status_log_id: 39064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]}} [2026-06-17 05:57:41.172] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:56:50Z", "value" => "online"} [2026-06-17 05:57:41.180] [DEBUG] QUERY OK db=6.3ms idle=8.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:56:50Z", "online", "network", 39064, ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:57:41.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303609, itemkey: "network", value: "online", timestamp: "2026-06-17T05:56:50Z", message: "Network connectivity", status_log_id: 39064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]}} [2026-06-17 05:57:41.180] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:57:41.180] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:56:50Z", "value" => "0"} [2026-06-17 05:57:41.185] [DEBUG] QUERY OK db=5.1ms idle=8.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:56:50Z", "0", "cpu", 39064, ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:57:41.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303610, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:56:50Z", message: "CPU usage percentage", status_log_id: 39064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]}} [2026-06-17 05:57:41.186] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:56:50Z", "value" => ""} [2026-06-17 05:57:41.192] [DEBUG] QUERY OK db=5.6ms queue=0.6ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:56:50Z", "parameter_config", 39064, ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:57:41.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303611, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T05:56:50Z", message: "Current parameters version", status_log_id: 39064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]}} [2026-06-17 05:57:41.193] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:56:50Z", "value" => ""} [2026-06-17 05:57:41.200] [DEBUG] QUERY OK db=5.4ms queue=0.4ms idle=8.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:56:50Z", "emv_config", 39064, ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:57:41.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303612, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T05:56:50Z", message: "Current EMV config version", status_log_id: 39064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]}} [2026-06-17 05:57:41.200] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:56:50Z", "value" => ""} [2026-06-17 05:57:41.206] [DEBUG] QUERY OK db=5.8ms idle=8.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:56:50Z", "keys_config", 39064, ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:57:41.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303613, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:56:50Z", message: "Current keys config version", status_log_id: 39064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]}} [2026-06-17 05:57:41.207] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:56:50Z", "value" => ""} [2026-06-17 05:57:41.213] [DEBUG] QUERY OK db=5.1ms idle=7.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:56:50Z", "application", 39064, ~N[2026-06-17 05:57:41], ~N[2026-06-17 05:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:57:41.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303614, itemkey: "application", value: nil, timestamp: "2026-06-17T05:56:50Z", message: "Current application version", status_log_id: 39064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:57:41], updated_at: ~N[2026-06-17 05:57:41]}} [2026-06-17 05:57:41.218] [WARN ] Unexpected async result [2026-06-17 05:57:41.218] [WARN ] Unexpected async result [2026-06-17 05:58:39.400] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:58:39.401] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:57:49Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:57:49Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:57:49Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:57:49Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:57:49Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:57:49Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:57:49Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:57:49Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:57:49Z","vendor":"MoreFun"} [2026-06-17 05:58:39.401] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:57:49Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:57:49Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:57:49Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:57:49Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:57:49Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:57:49Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:57:49Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:57:49Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:57:49Z", "vendor" => "MoreFun"} [2026-06-17 05:58:39.401] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:58:39.402] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:58:39.402] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:58:39.402] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1285.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-06-17 05:58:39.405] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms decode=0.1ms idle=285.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:58:39.406] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms 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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 05:58:39.408] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.6ms idle=1.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-06-17 05:58:39.410] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=2.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:58:39.449] [DEBUG] QUERY OK source="pos_merchant" db=39.3ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:58:39.452] [DEBUG] QUERY OK db=0.7ms queue=1.2ms idle=1780.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 ["372916040000000"] [2026-06-17 05:58:39.452] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:58:39.452] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=42.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:58:39.453] [DEBUG] QUERY OK source="address" db=0.4ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:58:39.453] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:58:39.456] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:58:39.470] [DEBUG] QUERY OK db=10.8ms queue=2.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", "909ab45c7d471c24f801a19dbf843097bd0fe3dfa0d2ef5a989eaaac5c311d68", 4514, 938, ~U[2026-06-17 05:58:39Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:58:39.471] [INFO ] AutoPushService: Created push log 29653 for MF919 params.zip [2026-06-17 05:58:39.471] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 4514, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:58:39.471] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:58:39.474] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:58:39.479] [DEBUG] QUERY OK source="config_file_versions" db=4.3ms idle=20.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-06-17 05:58:39.482] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:58:39.489] [DEBUG] QUERY OK db=6.0ms queue=0.3ms idle=12.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", "83b31dd2fde69fa1db1530e8cf1363fc190fb3a7f142372f07c8dbca351ea280", 4578, 17947, ~U[2026-06-17 05:58:39Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:58:39.489] [INFO ] AutoPushService: Created push log 29654 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:58:39.490] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 4578, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:58:39.490] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:58:39.490] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:58:39.491] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=12.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-06-17 05:58:39.491] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:58:39.493] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:58:39.493] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:58:39.494] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:58:39.494] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:58:39.494] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:58:39.495] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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-06-17 05:58:39.496] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:58:39.496] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:58:39.497] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:58:39.499] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:58:39.510] [DEBUG] QUERY OK source="tms_terminals" db=10.2ms queue=0.4ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "1.0.1", "1.0.0", ~N[2026-06-17 05:58:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:58:39.512] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.6ms idle=12.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-06-17 05:58:39.513] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=2.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-06-17 05:58:39.513] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:58:39.514] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:58:39.559] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms queue=40.6ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:58:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:58:39.566] [DEBUG] QUERY OK db=5.9ms queue=0.6ms idle=46.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:57:49Z", ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:58:39.567] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39065, oid: "organization_id", upload_time: "2026-06-17T05:57:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]} [2026-06-17 05:58:39.567] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:57:49Z", "value" => "online"} [2026-06-17 05:58:39.574] [DEBUG] QUERY OK db=6.1ms idle=8.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:57:49Z", "online", "status", 39065, ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:39.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303615, itemkey: "status", value: "online", timestamp: "2026-06-17T05:57:49Z", message: "Terminal status update", status_log_id: 39065, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]}} [2026-06-17 05:58:39.575] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:58:39.575] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:57:49Z", "value" => "54"} [2026-06-17 05:58:39.582] [DEBUG] QUERY OK db=6.5ms idle=9.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:57:49Z", "54", "battery", 39065, ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:39.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303617, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:57:49Z", message: "Battery level", status_log_id: 39065, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]}} [2026-06-17 05:58:39.583] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:57:49Z", "value" => "online"} [2026-06-17 05:58:39.591] [DEBUG] QUERY OK db=7.5ms queue=0.3ms idle=8.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:57:49Z", "online", "network", 39065, ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:39.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303619, itemkey: "network", value: "online", timestamp: "2026-06-17T05:57:49Z", message: "Network connectivity", status_log_id: 39065, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]}} [2026-06-17 05:58:39.592] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:58:39.592] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:57:49Z", "value" => "0"} [2026-06-17 05:58:39.600] [DEBUG] QUERY OK db=7.6ms idle=10.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:57:49Z", "0", "cpu", 39065, ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:39.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303621, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:57:49Z", message: "CPU usage percentage", status_log_id: 39065, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]}} [2026-06-17 05:58:39.601] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:57:49Z", "value" => "1.0.0"} [2026-06-17 05:58:39.607] [DEBUG] QUERY OK db=6.4ms idle=9.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:57:49Z", "1.0.0", "parameter_config", 39065, ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:39.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303623, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:57:49Z", message: "Current parameters version", status_log_id: 39065, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]}} [2026-06-17 05:58:39.608] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:57:49Z", "value" => "1.0.1"} [2026-06-17 05:58:39.614] [DEBUG] QUERY OK db=6.1ms idle=8.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:57:49Z", "1.0.1", "emv_config", 39065, ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:39.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303625, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:57:49Z", message: "Current EMV config version", status_log_id: 39065, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]}} [2026-06-17 05:58:39.615] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:57:49Z", "value" => ""} [2026-06-17 05:58:39.622] [DEBUG] QUERY OK db=7.4ms idle=7.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:57:49Z", "keys_config", 39065, ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:39.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303627, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:57:49Z", message: "Current keys config version", status_log_id: 39065, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]}} [2026-06-17 05:58:39.623] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:57:49Z", "value" => ""} [2026-06-17 05:58:39.631] [DEBUG] QUERY OK db=7.1ms queue=0.1ms idle=9.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:57:49Z", "application", 39065, ~N[2026-06-17 05:58:39], ~N[2026-06-17 05:58:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:39.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303629, itemkey: "application", value: nil, timestamp: "2026-06-17T05:57:49Z", message: "Current application version", status_log_id: 39065, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:39], updated_at: ~N[2026-06-17 05:58:39]}} [2026-06-17 05:58:39.632] [WARN ] Unexpected async result [2026-06-17 05:58:39.632] [WARN ] Unexpected async result [2026-06-17 05:58:58.035] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:58:58.035] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:58:08Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:58:08Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:58:08Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:58:08Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:58:08Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:58:08Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:58:08Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:58:08Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:58:08Z","vendor":"MoreFun"} [2026-06-17 05:58:58.036] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:58:08Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:58:08Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:58:08Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:58:08Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:58:08Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:58:08Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:58:08Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:58:08Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:58:08Z", "vendor" => "MoreFun"} [2026-06-17 05:58:58.036] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:58:58.036] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:58:58.037] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:58:58.039] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.7ms idle=858.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-06-17 05:58:58.040] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=368.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:58:58.042] [DEBUG] QUERY OK source="parameter_template_values" db=1.1ms 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-06-17 05:58:58.046] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=3.3ms idle=2.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-06-17 05:58:58.048] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms idle=5.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:58:58.088] [DEBUG] QUERY OK source="pos_merchant" db=39.7ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:58:58.089] [DEBUG] QUERY OK db=0.6ms queue=0.4ms idle=1419.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 ["372916040000000"] [2026-06-17 05:58:58.090] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:58:58.091] [DEBUG] QUERY OK source="pos_terminal_data" db=1.2ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:58:58.093] [DEBUG] QUERY OK source="address" db=1.4ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:58:58.093] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:58:58.094] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:58:58.108] [DEBUG] QUERY OK db=13.1ms idle=3.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", "ec8ec5b081bc155d36bb3839e2e1b54f3e5e54832c5dbff283cbf9a077499823", 580, 938, ~U[2026-06-17 05:58:58Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:58:58.108] [INFO ] AutoPushService: Created push log 29656 for MF919 params.zip [2026-06-17 05:58:58.110] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 580, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:58:58.110] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:58:58.110] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:58:58.113] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms idle=17.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-06-17 05:58:58.122] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:58:58.130] [DEBUG] QUERY OK db=5.5ms idle=16.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", "37171007215398dd9fbac4f594626903e025b9cebc83809aba4cd39aa96ba9ee", 4642, 17947, ~U[2026-06-17 05:58:58Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:58:58.130] [INFO ] AutoPushService: Created push log 29657 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:58:58.131] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 4642, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:58:58.131] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:58:58.131] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:58:58.134] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.6ms idle=19.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-06-17 05:58:58.134] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:58:58.136] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=5.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:58:58.138] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:58:58.140] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:58:58.141] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:58:58.141] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:58:58.144] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.5ms idle=9.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-06-17 05:58:58.144] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:58:58.144] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:58:58.145] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:58:58.145] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:58:58.154] [DEBUG] QUERY OK source="tms_terminals" db=8.0ms queue=0.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:58:58], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:58:58.156] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=9.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-06-17 05:58:58.157] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms 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-06-17 05:58:58.157] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:58:58.158] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:58:58.164] [DEBUG] QUERY OK source="tms_terminals" db=4.7ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:58:58], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:58:58.172] [DEBUG] QUERY OK db=8.0ms idle=5.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:58:08Z", ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:58:58.173] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39068, oid: "organization_id", upload_time: "2026-06-17T05:58:08Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]} [2026-06-17 05:58:58.174] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:58:08Z", "value" => "online"} [2026-06-17 05:58:58.180] [DEBUG] QUERY OK db=5.4ms idle=10.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:58:08Z", "online", "status", 39068, ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:58.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303635, itemkey: "status", value: "online", timestamp: "2026-06-17T05:58:08Z", message: "Terminal status update", status_log_id: 39068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]}} [2026-06-17 05:58:58.181] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:58:58.182] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:58:08Z", "value" => "54"} [2026-06-17 05:58:58.189] [DEBUG] QUERY OK db=7.4ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:58:08Z", "54", "battery", 39068, ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:58.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303637, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:58:08Z", message: "Battery level", status_log_id: 39068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]}} [2026-06-17 05:58:58.190] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:58:08Z", "value" => "online"} [2026-06-17 05:58:58.201] [DEBUG] QUERY OK db=10.5ms idle=5.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:58:08Z", "online", "network", 39068, ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:58.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303639, itemkey: "network", value: "online", timestamp: "2026-06-17T05:58:08Z", message: "Network connectivity", status_log_id: 39068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]}} [2026-06-17 05:58:58.201] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:58:58.203] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:58:08Z", "value" => "0"} [2026-06-17 05:58:58.212] [DEBUG] QUERY OK db=7.9ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:58:08Z", "0", "cpu", 39068, ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:58.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303641, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:58:08Z", message: "CPU usage percentage", status_log_id: 39068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]}} [2026-06-17 05:58:58.213] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:58:08Z", "value" => "1.0.0"} [2026-06-17 05:58:58.222] [DEBUG] QUERY OK db=9.1ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:58:08Z", "1.0.0", "parameter_config", 39068, ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:58.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303643, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:58:08Z", message: "Current parameters version", status_log_id: 39068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]}} [2026-06-17 05:58:58.222] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:58:08Z", "value" => "1.0.1"} [2026-06-17 05:58:58.229] [DEBUG] QUERY OK db=4.7ms queue=0.1ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:58:08Z", "1.0.1", "emv_config", 39068, ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:58.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303644, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:58:08Z", message: "Current EMV config version", status_log_id: 39068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]}} [2026-06-17 05:58:58.230] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:58:08Z", "value" => ""} [2026-06-17 05:58:58.236] [DEBUG] QUERY OK db=5.7ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:58:08Z", "keys_config", 39068, ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:58.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303645, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:58:08Z", message: "Current keys config version", status_log_id: 39068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]}} [2026-06-17 05:58:58.236] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:58:08Z", "value" => ""} [2026-06-17 05:58:58.243] [DEBUG] QUERY OK db=5.0ms queue=1.1ms idle=7.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:58:08Z", "application", 39068, ~N[2026-06-17 05:58:58], ~N[2026-06-17 05:58:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:58:58.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303646, itemkey: "application", value: nil, timestamp: "2026-06-17T05:58:08Z", message: "Current application version", status_log_id: 39068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:58:58], updated_at: ~N[2026-06-17 05:58:58]}} [2026-06-17 05:58:58.248] [WARN ] Unexpected async result [2026-06-17 05:58:58.248] [WARN ] Unexpected async result [2026-06-17 05:59:02.249] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:59:02.249] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:58:12Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:58:12Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:58:12Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:58:12Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:58:12Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:58:12Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:58:12Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:58:12Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:58:12Z","vendor":"MoreFun"} [2026-06-17 05:59:02.250] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:58:12Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:58:12Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:58:12Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:58:12Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:58:12Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:58:12Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:58:12Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:58:12Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:58:12Z", "vendor" => "MoreFun"} [2026-06-17 05:59:02.250] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:59:02.250] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:59:02.250] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:59:02.253] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=100.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 05:59:02.260] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms queue=0.1ms idle=51.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:59:02.263] [DEBUG] QUERY OK source="parameter_template_values" db=2.5ms queue=0.1ms idle=7.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-06-17 05:59:02.284] [DEBUG] QUERY OK source="parameter_definitions" db=9.2ms queue=11.0ms idle=3.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-06-17 05:59:02.285] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=21.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:59:02.325] [DEBUG] QUERY OK source="pos_merchant" db=39.9ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:59:02.330] [DEBUG] QUERY OK db=2.1ms queue=1.2ms idle=1657.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 ["372916040000000"] [2026-06-17 05:59:02.330] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:59:02.334] [DEBUG] QUERY OK source="pos_terminal_data" db=3.3ms idle=45.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:59:02.341] [DEBUG] QUERY OK source="address" db=4.5ms idle=8.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:59:02.341] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:59:02.346] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:59:02.355] [DEBUG] QUERY OK db=6.5ms idle=14.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", "cf3aa7a7b16d60bfd78fab6b48c4b526715288d216673b676f273c1dc042ca3c", 1219, 938, ~U[2026-06-17 05:59:02Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:59:02.355] [INFO ] AutoPushService: Created push log 29659 for MF919 params.zip [2026-06-17 05:59:02.355] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1219, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:59:02.356] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:59:02.358] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:59:02.359] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=20.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.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 05:59:02.366] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:59:02.379] [DEBUG] QUERY OK db=7.9ms idle=16.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", "a7a9bb030fce666c3bab2783b07779ae6b32db32a49ec7a40493dde0bd0d5998", 1283, 17947, ~U[2026-06-17 05:59:02Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:59:02.379] [INFO ] AutoPushService: Created push log 29660 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:59:02.384] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1283, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:59:02.384] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:59:02.385] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:59:02.391] [DEBUG] QUERY OK source="config_file_versions" db=6.5ms idle=25.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-06-17 05:59:02.391] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:59:02.394] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=13.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:59:02.394] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:59:02.399] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:59:02.399] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:59:02.400] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:59:02.402] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=9.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-06-17 05:59:02.403] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:59:02.403] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:59:02.404] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:59:02.404] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:59:02.414] [DEBUG] QUERY OK source="tms_terminals" db=7.9ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 05:59:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 05:59:02.419] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms queue=1.4ms idle=10.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` = ?)) 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-06-17 05:59:02.421] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 05:59:02.421] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:59:02.423] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:59:02.433] [DEBUG] QUERY OK source="tms_terminals" db=9.2ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:59:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 05:59:02.443] [DEBUG] QUERY OK db=8.7ms idle=10.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:58:12Z", ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:59:02.443] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39070, oid: "organization_id", upload_time: "2026-06-17T05:58:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]} [2026-06-17 05:59:02.443] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:58:12Z", "value" => "online"} [2026-06-17 05:59:02.453] [DEBUG] QUERY OK db=8.9ms idle=11.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:58:12Z", "online", "status", 39070, ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:02.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303651, itemkey: "status", value: "online", timestamp: "2026-06-17T05:58:12Z", message: "Terminal status update", status_log_id: 39070, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]}} [2026-06-17 05:59:02.456] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:59:02.456] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:58:12Z", "value" => "54"} [2026-06-17 05:59:02.473] [DEBUG] QUERY OK db=14.6ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:58:12Z", "54", "battery", 39070, ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:02.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303654, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:58:12Z", message: "Battery level", status_log_id: 39070, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]}} [2026-06-17 05:59:02.474] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:58:12Z", "value" => "online"} [2026-06-17 05:59:02.481] [DEBUG] QUERY OK db=7.3ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:58:12Z", "online", "network", 39070, ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:02.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303656, itemkey: "network", value: "online", timestamp: "2026-06-17T05:58:12Z", message: "Network connectivity", status_log_id: 39070, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]}} [2026-06-17 05:59:02.482] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:59:02.489] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:58:12Z", "value" => "0"} [2026-06-17 05:59:02.496] [DEBUG] QUERY OK db=5.2ms queue=1.0ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:58:12Z", "0", "cpu", 39070, ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:02.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303658, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:58:12Z", message: "CPU usage percentage", status_log_id: 39070, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]}} [2026-06-17 05:59:02.496] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:58:12Z", "value" => "1.0.0"} [2026-06-17 05:59:02.504] [DEBUG] QUERY OK db=6.7ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:58:12Z", "1.0.0", "parameter_config", 39070, ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:02.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303659, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:58:12Z", message: "Current parameters version", status_log_id: 39070, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]}} [2026-06-17 05:59:02.504] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:58:12Z", "value" => "1.0.1"} [2026-06-17 05:59:02.510] [DEBUG] QUERY OK db=5.3ms idle=8.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:58:12Z", "1.0.1", "emv_config", 39070, ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:02.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303660, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:58:12Z", message: "Current EMV config version", status_log_id: 39070, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]}} [2026-06-17 05:59:02.510] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:58:12Z", "value" => ""} [2026-06-17 05:59:02.517] [DEBUG] QUERY OK db=6.5ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:58:12Z", "keys_config", 39070, ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:02.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303661, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:58:12Z", message: "Current keys config version", status_log_id: 39070, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]}} [2026-06-17 05:59:02.517] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:58:12Z", "value" => ""} [2026-06-17 05:59:02.524] [DEBUG] QUERY OK db=6.7ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:58:12Z", "application", 39070, ~N[2026-06-17 05:59:02], ~N[2026-06-17 05:59:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:02.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303662, itemkey: "application", value: nil, timestamp: "2026-06-17T05:58:12Z", message: "Current application version", status_log_id: 39070, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:02], updated_at: ~N[2026-06-17 05:59:02]}} [2026-06-17 05:59:02.531] [WARN ] Unexpected async result [2026-06-17 05:59:02.531] [WARN ] Unexpected async result [2026-06-17 05:59:20.756] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 05:59:20.756] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T05:58:30Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T05:58:30Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T05:58:30Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T05:58:30Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T05:58:30Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T05:58:30Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T05:58:30Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T05:58:30Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T05:58:30Z","vendor":"MoreFun"} [2026-06-17 05:59:20.756] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:58:30Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:58:30Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:58:30Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:58:30Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:58:30Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:58:30Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:58:30Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:58:30Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T05:58:30Z", "vendor" => "MoreFun"} [2026-06-17 05:59:20.756] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 05:59:20.757] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 05:59:20.757] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 05:59:20.759] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=1.8ms idle=1084.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-06-17 05:59:20.760] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=490.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 05:59:20.761] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms idle=0.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-06-17 05:59:20.764] [DEBUG] QUERY OK source="parameter_definitions" db=1.6ms queue=0.5ms idle=1.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-06-17 05:59:20.765] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=2.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 05:59:20.804] [DEBUG] QUERY OK source="pos_merchant" db=38.9ms queue=0.5ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 05:59:20.806] [DEBUG] QUERY OK db=0.8ms queue=0.5ms idle=1132.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 ["372916040000000"] [2026-06-17 05:59:20.806] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 05:59:20.807] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 05:59:20.808] [DEBUG] QUERY OK source="address" db=0.3ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 05:59:20.808] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 05:59:20.810] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 05:59:20.817] [DEBUG] QUERY OK db=6.0ms idle=3.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", "854e7f921be8c1627683645372e374e8e839ebc732e2610cfcaa1518b3c75dd3", 1443, 938, ~U[2026-06-17 05:59:20Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 05:59:20.817] [INFO ] AutoPushService: Created push log 29661 for MF919 params.zip [2026-06-17 05:59:20.818] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1443, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 05:59:20.818] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:59:20.818] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 05:59:20.819] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=10.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-06-17 05:59:20.824] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 05:59:20.832] [DEBUG] QUERY OK db=4.8ms idle=10.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", "070616667ad91bbedc0d1aff3640555dbe68864025111cb4aa8420e60e348fe8", 676, 17947, ~U[2026-06-17 05:59:20Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 05:59:20.832] [INFO ] AutoPushService: Created push log 29663 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 05:59:20.832] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 676, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 05:59:20.833] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 05:59:20.834] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 05:59:20.837] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms idle=14.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-06-17 05:59:20.838] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 05:59:20.839] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=5.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 05:59:20.839] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 05:59:20.841] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 05:59:20.841] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:59:20.842] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 05:59:20.844] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms 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-06-17 05:59:20.844] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 05:59:20.844] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 05:59:20.846] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 05:59:20.847] [INFO ] Terminal updated: 98251226730002 [2026-06-17 05:59:20.848] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms 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-06-17 05:59:20.848] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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-06-17 05:59:20.848] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 05:59:20.850] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 05:59:20.859] [DEBUG] QUERY OK db=8.2ms idle=2.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T05:58:30Z", ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 05:59:20.859] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39072, oid: "organization_id", upload_time: "2026-06-17T05:58:30Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]} [2026-06-17 05:59:20.859] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T05:58:30Z", "value" => "online"} [2026-06-17 05:59:20.866] [DEBUG] QUERY OK db=6.3ms queue=0.1ms idle=9.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T05:58:30Z", "online", "status", 39072, ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:20.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303664, itemkey: "status", value: "online", timestamp: "2026-06-17T05:58:30Z", message: "Terminal status update", status_log_id: 39072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]}} [2026-06-17 05:59:20.866] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 05:59:20.867] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:59:20], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 05:59:20.869] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T05:58:30Z", "value" => "54"} [2026-06-17 05:59:20.874] [DEBUG] QUERY OK db=4.8ms idle=3.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T05:58:30Z", "54", "battery", 39072, ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:20.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303666, itemkey: "battery", value: "54", timestamp: "2026-06-17T05:58:30Z", message: "Battery level", status_log_id: 39072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]}} [2026-06-17 05:59:20.874] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T05:58:30Z", "value" => "online"} [2026-06-17 05:59:20.881] [DEBUG] QUERY OK db=5.6ms queue=0.1ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T05:58:30Z", "online", "network", 39072, ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:20.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303668, itemkey: "network", value: "online", timestamp: "2026-06-17T05:58:30Z", message: "Network connectivity", status_log_id: 39072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]}} [2026-06-17 05:59:20.881] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 05:59:20.882] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=7.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:59:20], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 05:59:20.882] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T05:58:30Z", "value" => "0"} [2026-06-17 05:59:20.888] [DEBUG] QUERY OK db=5.5ms idle=1.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T05:58:30Z", "0", "cpu", 39072, ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:20.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303670, itemkey: "cpu", value: "0", timestamp: "2026-06-17T05:58:30Z", message: "CPU usage percentage", status_log_id: 39072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]}} [2026-06-17 05:59:20.888] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T05:58:30Z", "value" => "1.0.0"} [2026-06-17 05:59:20.895] [DEBUG] QUERY OK db=6.0ms idle=6.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T05:58:30Z", "1.0.0", "parameter_config", 39072, ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:20.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303672, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T05:58:30Z", message: "Current parameters version", status_log_id: 39072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]}} [2026-06-17 05:59:20.895] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T05:58:30Z", "value" => "1.0.1"} [2026-06-17 05:59:20.901] [DEBUG] QUERY OK db=6.0ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T05:58:30Z", "1.0.1", "emv_config", 39072, ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:20.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303674, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T05:58:30Z", message: "Current EMV config version", status_log_id: 39072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]}} [2026-06-17 05:59:20.902] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T05:58:30Z", "value" => ""} [2026-06-17 05:59:20.909] [DEBUG] QUERY OK db=5.7ms idle=8.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T05:58:30Z", "keys_config", 39072, ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:20.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303676, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T05:58:30Z", message: "Current keys config version", status_log_id: 39072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]}} [2026-06-17 05:59:20.910] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T05:58:30Z", "value" => ""} [2026-06-17 05:59:20.916] [DEBUG] QUERY OK db=6.2ms idle=8.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T05:58:30Z", "application", 39072, ~N[2026-06-17 05:59:20], ~N[2026-06-17 05:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 05:59:20.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303678, itemkey: "application", value: nil, timestamp: "2026-06-17T05:58:30Z", message: "Current application version", status_log_id: 39072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 05:59:20], updated_at: ~N[2026-06-17 05:59:20]}} [2026-06-17 05:59:20.918] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=7.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 05:59:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 05:59:20.918] [WARN ] Unexpected async result [2026-06-17 05:59:20.919] [WARN ] Unexpected async result [2026-06-17 06:00:02.148] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 06:00:02.148] [INFO ] Incoming JSON payload: {"oid":"6b2fd314-bc73-40eb-a7da-1456b69fbaa0","sn":"98251226730001","uploadTime":"2026-06-17T14:03:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"ram_free_mb","value":"912","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T14:03:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:03:15Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 06:00:02.149] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6b2fd314-bc73-40eb-a7da-1456b69fbaa0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:03:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:03:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:03:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:03:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:03:15Z", "value" => "912"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:03:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:03:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:03:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:03:15Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:03:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:03:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T14:03:15Z", "vendor" => "morefun"} [2026-06-17 06:00:02.149] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 06:00:02.149] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 06:00:02.149] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 06:00:02.152] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=1314.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 06:00:02.162] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms queue=4.4ms idle=777.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-06-17 06:00:02.162] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 06:00:02.165] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=9.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:98 [2026-06-17 06:00:02.166] [INFO ] Terminal updated: 98251226730001 [2026-06-17 06:00:02.186] [DEBUG] QUERY OK source="tms_terminals" db=19.8ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:00:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:00:02.186] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 06:00:02.187] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=20.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:627 [2026-06-17 06:00:02.197] [DEBUG] QUERY OK source="tms_terminals" db=9.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:00:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:00:02.203] [DEBUG] QUERY OK db=6.0ms queue=0.1ms idle=9.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6b2fd314-bc73-40eb-a7da-1456b69fbaa0", "2026-06-17T14:03:15Z", ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:00:02.203] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39073, oid: "6b2fd314-bc73-40eb-a7da-1456b69fbaa0", upload_time: "2026-06-17T14:03:15Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]} [2026-06-17 06:00:02.204] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:03:15Z", "value" => "morefun"} [2026-06-17 06:00:02.251] [DEBUG] QUERY OK db=5.1ms queue=41.0ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "morefun", "vendor", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303679, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.254] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:03:15Z", "value" => "kiosk_launcher"} [2026-06-17 06:00:02.317] [DEBUG] QUERY OK db=19.0ms queue=43.5ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "kiosk_launcher", "model", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303681, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.320] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:03:15Z", "value" => "1.0"} [2026-06-17 06:00:02.334] [DEBUG] QUERY OK db=11.9ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "1.0", "app_version", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303684, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.335] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:03:15Z", "value" => "13"} [2026-06-17 06:00:02.350] [DEBUG] QUERY OK db=15.0ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "13", "android_version", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303686, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.351] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:03:15Z", "value" => "912"} [2026-06-17 06:00:02.360] [DEBUG] QUERY OK db=9.2ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "912", "ram_free_mb", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303688, itemkey: "ram_free_mb", value: "912", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.362] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:03:15Z", "value" => "WIFI"} [2026-06-17 06:00:02.378] [DEBUG] QUERY OK db=16.0ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "WIFI", "network_type", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303690, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.378] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:03:15Z", "value" => "true"} [2026-06-17 06:00:02.389] [DEBUG] QUERY OK db=9.6ms queue=0.2ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "true", "kiosk_active", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303691, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.389] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:03:15Z", "value" => ""} [2026-06-17 06:00:02.401] [DEBUG] QUERY OK db=11.0ms queue=0.9ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:03:15Z", "sim_operator", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303693, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.402] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"} [2026-06-17 06:00:02.414] [DEBUG] QUERY OK db=11.4ms queue=0.2ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "UNKNOWN", "sim_number", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303695, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.415] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"} [2026-06-17 06:00:02.421] [DEBUG] QUERY OK db=5.8ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "UNKNOWN", "sim_iccid", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303697, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.421] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"} [2026-06-17 06:00:02.434] [DEBUG] QUERY OK db=12.9ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "UNKNOWN", "sim_imsi", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303699, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.435] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"} [2026-06-17 06:00:02.441] [DEBUG] QUERY OK db=6.1ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "UNKNOWN", "sim_iccid2", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303701, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.442] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:03:15Z", "value" => "UNKNOWN"} [2026-06-17 06:00:02.466] [DEBUG] QUERY OK db=16.0ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "UNKNOWN", "sim_imsi2", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303704, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.467] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:03:15Z", "value" => "5"} [2026-06-17 06:00:02.479] [DEBUG] QUERY OK db=11.5ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "5", "data_usage_mb", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303706, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.479] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:03:15Z", "value" => "0"} [2026-06-17 06:00:02.488] [DEBUG] QUERY OK db=6.6ms queue=1.8ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "0", "mobile_data_mb", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303707, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:02.492] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:03:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 06:00:02.510] [DEBUG] QUERY OK db=10.5ms queue=0.2ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:03:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39073, ~N[2026-06-17 06:00:02], ~N[2026-06-17 06:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:00:02.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303709, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T14:03:15Z", message: nil, status_log_id: 39073, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:00:02], updated_at: ~N[2026-06-17 06:00:02]}} [2026-06-17 06:00:43.111] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 37µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "A2cwAVsZIUkAcT0kOwZgNTgvbxRAH34i30Zq9mM07HQUqO8PwHXwyS9J", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "2", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 06:00:43.660] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 06:00:43.688] [DEBUG] QUERY OK source="users_tokens" db=0.4ms queue=0.7ms idle=41.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 06:00:43.683856Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 06:00:43.695] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms idle=158.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 06:00:43.699] [DEBUG] QUERY OK source="app_packages" db=0.4ms queue=1.5ms idle=23.3ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 06:00:43.713] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.9ms idle=16.7ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 06:00:43.718] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.5ms idle=17.5ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 06:00:43.718] [DEBUG] Replied in 61ms [2026-06-17 06:00:43.723] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:00:43.725] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.3ms idle=11.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:00:43.726] [DEBUG] Replied in 2ms [2026-06-17 06:02:09.678] [INFO ] Running offline device check... [2026-06-17 06:02:09.678] [INFO ] Starting offline device check... [2026-06-17 06:02:09.682] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms queue=0.1ms idle=861.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:677 [2026-06-17 06:02:09.687] [INFO ] Starting scheduled rule validation [2026-06-17 06:02:09.687] [DEBUG] Validating missing assignments [2026-06-17 06:02:09.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms queue=0.9ms idle=371.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:688 [2026-06-17 06:02:09.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.701] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.702] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.703] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.704] [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:688 [2026-06-17 06:02:09.706] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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:688 [2026-06-17 06:02:09.708] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.710] [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:688 [2026-06-17 06:02:09.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.725] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms queue=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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms idle=13.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:688 [2026-06-17 06:02:09.743] [DEBUG] QUERY OK source="terminal_group_rules" db=4.5ms queue=8.0ms idle=5.8ms 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-06-17 06:02:09.743] [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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.746] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=0.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-06-17 06:02:09.746] [DEBUG] Re-applied 0 rules during validation [2026-06-17 06:02:09.747] [DEBUG] Validating invalid assignments [2026-06-17 06:02:09.747] [DEBUG] Validating rule consistency [2026-06-17 06:02:09.747] [DEBUG] Updating group terminal counts [2026-06-17 06:02:09.747] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.753] [DEBUG] QUERY OK source="terminal_groups" db=1.1ms queue=5.1ms idle=1.0ms 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-06-17 06:02:09.755] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.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-06-17 06:02:09.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.763] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.764] [DEBUG] QUERY OK source="terminal_groups" db=1.0ms queue=1.0ms idle=1.0ms 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-06-17 06:02:09.765] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.768] [DEBUG] QUERY OK source="terminal_group_rules" db=2.7ms queue=1.5ms idle=0.4ms 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-06-17 06:02:09.770] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.777] [DEBUG] QUERY OK source="terminal_group_rules" db=2.9ms queue=3.1ms idle=1.0ms 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-06-17 06:02:09.788] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=8.4ms idle=0.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-06-17 06:02:09.790] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=1.5ms idle=1.5ms 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-06-17 06:02:09.790] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.794] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms queue=3.1ms idle=0.2ms 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-06-17 06:02:09.794] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 06:02:09.795] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 06:02:09.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms 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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms 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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.4ms idle=8.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:688 [2026-06-17 06:02:09.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms 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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.816] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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:688 [2026-06-17 06:02:09.828] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.831] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.832] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.832] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.834] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.835] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:02:09.845] [INFO ] Offline device check completed. Found 37 offline devices, updated 0 statuses. [2026-06-17 06:02:09.846] [INFO ] Offline device check completed successfully [2026-06-17 06:04:34.069] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:04:34.070] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:03:44Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:03:44Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:03:44Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:03:44Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:03:44Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:03:44Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:03:44Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:03:44Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:03:44Z","vendor":"MoreFun"} [2026-06-17 06:04:34.070] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:03:44Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:03:44Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:03:44Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:03:44Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:03:44Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:03:44Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:03:44Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:03:44Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:03:44Z", "vendor" => "MoreFun"} [2026-06-17 06:04:34.070] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:04:34.070] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:04:34.070] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:04:34.073] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=666.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-06-17 06:04:34.074] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=354.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:04:34.076] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms idle=2.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-06-17 06:04:34.078] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=1.0ms idle=1.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-06-17 06:04:34.079] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:04:34.120] [DEBUG] QUERY OK source="pos_merchant" db=39.8ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:04:34.121] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1402.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 ["372916040000000"] [2026-06-17 06:04:34.121] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:04:34.122] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=42.1ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:04:34.125] [DEBUG] QUERY OK source="address" db=1.6ms queue=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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:04:34.125] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:04:34.127] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:04:34.606] [DEBUG] QUERY OK db=477.6ms idle=5.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", "7782651fafd108e31cf5d8fbaa3f03631c7a8c206f2fa340933be68ff6c68da9", 5186, 938, ~U[2026-06-17 06:04:34Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:04:34.606] [INFO ] AutoPushService: Created push log 29665 for MF919 params.zip [2026-06-17 06:04:34.606] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5186, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:04:34.606] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:04:34.607] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:04:34.607] [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.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 06:04:34.614] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:04:34.648] [DEBUG] QUERY OK db=33.3ms idle=7.3ms 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", "206f78268d9d5626db0234ca9de46e29987c61178e5950bb6cc7068a3c5e61a0", 741, 17947, ~U[2026-06-17 06:04:34Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:04:34.649] [INFO ] AutoPushService: Created push log 29666 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:04:34.649] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 741, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:04:34.649] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:04:34.649] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:04:34.651] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=10.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-06-17 06:04:34.651] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:04:34.652] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:04:34.653] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:04:34.654] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:04:34.654] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:04:34.654] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:04:34.655] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=4.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-06-17 06:04:34.657] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:04:34.657] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:04:34.659] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=5.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:04:34.659] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:04:34.667] [DEBUG] QUERY OK source="tms_terminals" db=7.5ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:04:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:04:34.669] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=8.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-06-17 06:04:34.669] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 06:04:34.670] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:04:34.671] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:04:34.702] [DEBUG] QUERY OK source="tms_terminals" db=30.3ms queue=0.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:04:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:04:34.760] [DEBUG] QUERY OK db=57.5ms idle=31.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:03:44Z", ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:04:34.760] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39075, oid: "organization_id", upload_time: "2026-06-17T06:03:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:34], updated_at: ~N[2026-06-17 06:04:34]} [2026-06-17 06:04:34.761] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:03:44Z", "value" => "online"} [2026-06-17 06:04:34.787] [DEBUG] QUERY OK db=26.5ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:03:44Z", "online", "status", 39075, ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:04:34.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303711, itemkey: "status", value: "online", timestamp: "2026-06-17T06:03:44Z", message: "Terminal status update", status_log_id: 39075, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:34], updated_at: ~N[2026-06-17 06:04:34]}} [2026-06-17 06:04:34.788] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:04:34.788] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:03:44Z", "value" => "54"} [2026-06-17 06:04:34.789] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:04:34.825] [DEBUG] QUERY OK db=36.6ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:03:44Z", "54", "battery", 39075, ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:04:34.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303713, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:03:44Z", message: "Battery level", status_log_id: 39075, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:34], updated_at: ~N[2026-06-17 06:04:34]}} [2026-06-17 06:04:34.825] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:03:44Z", "value" => "online"} [2026-06-17 06:04:34.853] [DEBUG] QUERY OK db=27.4ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:03:44Z", "online", "network", 39075, ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:04:34.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303715, itemkey: "network", value: "online", timestamp: "2026-06-17T06:03:44Z", message: "Network connectivity", status_log_id: 39075, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:34], updated_at: ~N[2026-06-17 06:04:34]}} [2026-06-17 06:04:34.854] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:04:34.855] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:03:44Z", "value" => "0"} [2026-06-17 06:04:34.855] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:04:34.895] [DEBUG] QUERY OK db=40.1ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:03:44Z", "0", "cpu", 39075, ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:04:34.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303717, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:03:44Z", message: "CPU usage percentage", status_log_id: 39075, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:34], updated_at: ~N[2026-06-17 06:04:34]}} [2026-06-17 06:04:34.896] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:03:44Z", "value" => "1.0.0"} [2026-06-17 06:04:34.937] [DEBUG] QUERY OK db=41.1ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:03:44Z", "1.0.0", "parameter_config", 39075, ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:04:34.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303719, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:03:44Z", message: "Current parameters version", status_log_id: 39075, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:34], updated_at: ~N[2026-06-17 06:04:34]}} [2026-06-17 06:04:34.938] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:03:44Z", "value" => "1.0.1"} [2026-06-17 06:04:34.960] [DEBUG] QUERY OK db=21.9ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:03:44Z", "1.0.1", "emv_config", 39075, ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:04:34.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303721, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:03:44Z", message: "Current EMV config version", status_log_id: 39075, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:34], updated_at: ~N[2026-06-17 06:04:34]}} [2026-06-17 06:04:34.960] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:03:44Z", "value" => ""} [2026-06-17 06:04:35.033] [DEBUG] QUERY OK db=30.8ms queue=41.3ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:03:44Z", "keys_config", 39075, ~N[2026-06-17 06:04:34], ~N[2026-06-17 06:04:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:04:35.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303724, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:03:44Z", message: "Current keys config version", status_log_id: 39075, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:34], updated_at: ~N[2026-06-17 06:04:34]}} [2026-06-17 06:04:35.034] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:03:44Z", "value" => ""} [2026-06-17 06:04:35.112] [DEBUG] QUERY OK db=35.5ms queue=42.5ms idle=74.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:03:44Z", "application", 39075, ~N[2026-06-17 06:04:35], ~N[2026-06-17 06:04:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:04:35.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303726, itemkey: "application", value: nil, timestamp: "2026-06-17T06:03:44Z", message: "Current application version", status_log_id: 39075, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:04:35], updated_at: ~N[2026-06-17 06:04:35]}} [2026-06-17 06:04:35.115] [WARN ] Unexpected async result [2026-06-17 06:04:35.115] [WARN ] Unexpected async result [2026-06-17 06:04:35.118] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=81.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:04:35.131] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:05:00.144] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:05:00.144] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:04:10Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:04:10Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:04:10Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:04:10Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:04:10Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:04:10Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:04:10Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:04:10Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:04:10Z","vendor":"MoreFun"} [2026-06-17 06:05:00.145] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:04:10Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:04:10Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:04:10Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:04:10Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:04:10Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:04:10Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:04:10Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:04:10Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:04:10Z", "vendor" => "MoreFun"} [2026-06-17 06:05:00.145] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:05:00.145] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:05:00.145] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:05:00.148] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=1428.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-06-17 06:05:00.151] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.3ms idle=669.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:05:00.158] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms idle=7.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-06-17 06:05:00.162] [DEBUG] QUERY OK source="parameter_definitions" db=2.2ms queue=1.1ms 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-06-17 06:05:00.164] [DEBUG] QUERY OK source="pos_terminal" db=1.3ms idle=7.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:05:00.206] [DEBUG] QUERY OK source="pos_merchant" db=41.1ms idle=3.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:05:00.208] [DEBUG] QUERY OK db=1.0ms queue=1.2ms idle=488.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 ["372916040000000"] [2026-06-17 06:05:00.208] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:05:00.209] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=44.1ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:05:00.210] [DEBUG] QUERY OK source="address" db=0.5ms idle=3.6ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:05:00.210] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:05:00.213] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:05:00.247] [DEBUG] QUERY OK db=31.8ms idle=4.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", "642649ca937cc7eb1826bb9c706df1335b7abc1a0735335b2af8e6488998bb78", 1667, 938, ~U[2026-06-17 06:05:00Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:05:00.247] [INFO ] AutoPushService: Created push log 29668 for MF919 params.zip [2026-06-17 06:05:00.247] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1667, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:05:00.247] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:05:00.247] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:05:00.250] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms queue=0.4ms idle=37.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-06-17 06:05:00.259] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:05:00.295] [DEBUG] QUERY OK db=25.3ms queue=2.1ms idle=22.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", "932760b26c0886d0c3977487c48d4c33ccd891ffce6e02afb547af4517605b94", 5314, 17947, ~U[2026-06-17 06:05:00Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:05:00.296] [INFO ] AutoPushService: Created push log 29669 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:05:00.296] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 5314, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:05:00.297] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:05:00.297] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:05:00.301] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms idle=48.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-06-17 06:05:00.301] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:05:00.302] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:05:00.303] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:05:00.309] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:05:00.310] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:05:00.310] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:05:00.313] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms 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-06-17 06:05:00.314] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:05:00.314] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:05:00.316] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.3ms idle=11.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:05:00.317] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:05:00.318] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=3.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-06-17 06:05:00.319] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.1ms idle=2.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-06-17 06:05:00.319] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:05:00.321] [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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:05:00.326] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms queue=0.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:05:00.343] [DEBUG] QUERY OK db=16.8ms idle=4.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:04:10Z", ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:05:00.343] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39078, oid: "organization_id", upload_time: "2026-06-17T06:04:10Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]} [2026-06-17 06:05:00.343] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:04:10Z", "value" => "online"} [2026-06-17 06:05:00.389] [DEBUG] QUERY OK db=45.6ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:04:10Z", "online", "status", 39078, ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:00.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303727, itemkey: "status", value: "online", timestamp: "2026-06-17T06:04:10Z", message: "Terminal status update", status_log_id: 39078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]}} [2026-06-17 06:05:00.390] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:05:00.391] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=47.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:00], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:05:00.391] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:04:10Z", "value" => "54"} [2026-06-17 06:05:00.391] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:05:00.417] [DEBUG] QUERY OK db=25.9ms idle=1.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:04:10Z", "54", "battery", 39078, ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:00.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303729, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:04:10Z", message: "Battery level", status_log_id: 39078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]}} [2026-06-17 06:05:00.418] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:04:10Z", "value" => "online"} [2026-06-17 06:05:00.468] [DEBUG] QUERY OK db=48.7ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:04:10Z", "online", "network", 39078, ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:00.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303731, itemkey: "network", value: "online", timestamp: "2026-06-17T06:04:10Z", message: "Network connectivity", status_log_id: 39078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]}} [2026-06-17 06:05:00.468] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:05:00.469] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=51.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:00], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:05:00.469] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:05:00.470] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:04:10Z", "value" => "0"} [2026-06-17 06:05:00.499] [DEBUG] QUERY OK db=28.8ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:04:10Z", "0", "cpu", 39078, ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:00.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303733, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:04:10Z", message: "CPU usage percentage", status_log_id: 39078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]}} [2026-06-17 06:05:00.499] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:04:10Z", "value" => "1.0.0"} [2026-06-17 06:05:00.532] [DEBUG] QUERY OK db=32.6ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:04:10Z", "1.0.0", "parameter_config", 39078, ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:00.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303735, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:04:10Z", message: "Current parameters version", status_log_id: 39078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]}} [2026-06-17 06:05:00.532] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:04:10Z", "value" => "1.0.1"} [2026-06-17 06:05:00.547] [DEBUG] QUERY OK db=13.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:04:10Z", "1.0.1", "emv_config", 39078, ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:00.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303737, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:04:10Z", message: "Current EMV config version", status_log_id: 39078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]}} [2026-06-17 06:05:00.547] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:04:10Z", "value" => ""} [2026-06-17 06:05:00.565] [DEBUG] QUERY OK db=16.9ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:04:10Z", "keys_config", 39078, ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:00.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303739, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:04:10Z", message: "Current keys config version", status_log_id: 39078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]}} [2026-06-17 06:05:00.566] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:04:10Z", "value" => ""} [2026-06-17 06:05:00.604] [DEBUG] QUERY OK db=37.5ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:04:10Z", "application", 39078, ~N[2026-06-17 06:05:00], ~N[2026-06-17 06:05:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:00.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303741, itemkey: "application", value: nil, timestamp: "2026-06-17T06:04:10Z", message: "Current application version", status_log_id: 39078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:00], updated_at: ~N[2026-06-17 06:05:00]}} [2026-06-17 06:05:00.605] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=38.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 06:05:00.605] [WARN ] Unexpected async result [2026-06-17 06:05:00.606] [WARN ] Unexpected async result [2026-06-17 06:05:00.608] [DEBUG] QUERY OK source="tms_terminals" db=1.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:05:00.615] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:05:02.781] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:05:02.781] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:04:13Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:04:13Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:04:13Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:04:13Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:04:13Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:04:13Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:04:13Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:04:13Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:04:13Z","vendor":"MoreFun"} [2026-06-17 06:05:02.781] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:04:13Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:04:13Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:04:13Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:04:13Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:04:13Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:04:13Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:04:13Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:04:13Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:04:13Z", "vendor" => "MoreFun"} [2026-06-17 06:05:02.781] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:05:02.782] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:05:02.782] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:05:02.788] [DEBUG] QUERY OK source="parameter_templates" db=6.4ms idle=276.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-06-17 06:05:02.794] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms idle=71.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:05:02.799] [DEBUG] QUERY OK source="parameter_template_values" db=3.8ms idle=6.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-06-17 06:05:02.809] [DEBUG] QUERY OK source="parameter_definitions" db=4.6ms queue=5.2ms idle=6.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-06-17 06:05:02.812] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=12.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:05:02.851] [DEBUG] QUERY OK source="pos_merchant" db=38.4ms idle=3.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:05:02.855] [DEBUG] QUERY OK db=0.9ms queue=3.2ms idle=1133.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 ["372916040000000"] [2026-06-17 06:05:02.855] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:05:02.860] [DEBUG] QUERY OK source="pos_terminal_data" db=4.5ms idle=43.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:05:02.862] [DEBUG] QUERY OK source="address" db=1.0ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:05:02.862] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:05:02.867] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:05:02.886] [DEBUG] QUERY OK db=18.1ms idle=7.7ms 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", "ef2f5b46937e6b038c39ee0d8b244cd1b9d1b121b6a6b2bfe7515de04fbbc340", 5410, 938, ~U[2026-06-17 06:05:02Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:05:02], ~N[2026-06-17 06:05:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:05:02.886] [INFO ] AutoPushService: Created push log 29671 for MF919 params.zip [2026-06-17 06:05:02.890] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5410, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:05:02.891] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:05:02.891] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:05:02.896] [DEBUG] QUERY OK source="config_file_versions" db=4.4ms queue=0.1ms idle=29.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-06-17 06:05:02.906] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:05:02.932] [DEBUG] QUERY OK db=24.2ms queue=0.8ms idle=21.3ms 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", "5218d65802708df6c9d31149ca29976c67309aec5ae3bd43b0a6beac2f14a375", 1795, 17947, ~U[2026-06-17 06:05:02Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:05:02], ~N[2026-06-17 06:05:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:05:02.933] [INFO ] AutoPushService: Created push log 29672 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:05:02.933] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1795, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:05:02.937] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:05:02.940] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:05:02.942] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=44.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-06-17 06:05:02.942] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:05:02.945] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=10.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:05:02.945] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:05:02.948] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:05:02.948] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:05:02.950] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:05:02.953] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms idle=7.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-06-17 06:05:02.954] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:05:02.954] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:05:02.956] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:05:02.957] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:05:02.960] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=2.5ms idle=4.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-06-17 06:05:02.966] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms idle=4.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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 06:05:02.966] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:05:02.968] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:05:02.978] [DEBUG] QUERY OK source="tms_terminals" db=6.3ms queue=3.9ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:05:03.010] [DEBUG] QUERY OK db=31.4ms idle=10.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:04:13Z", ~N[2026-06-17 06:05:02], ~N[2026-06-17 06:05:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:05:03.010] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39080, oid: "organization_id", upload_time: "2026-06-17T06:04:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:02], updated_at: ~N[2026-06-17 06:05:02]} [2026-06-17 06:05:03.011] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:04:13Z", "value" => "online"} [2026-06-17 06:05:03.043] [DEBUG] QUERY OK db=30.9ms queue=1.1ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:04:13Z", "online", "status", 39080, ~N[2026-06-17 06:05:03], ~N[2026-06-17 06:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:03.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303744, itemkey: "status", value: "online", timestamp: "2026-06-17T06:04:13Z", message: "Terminal status update", status_log_id: 39080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:03], updated_at: ~N[2026-06-17 06:05:03]}} [2026-06-17 06:05:03.043] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:05:03.069] [DEBUG] QUERY OK source="tms_terminals" db=25.5ms idle=33.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:03], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:05:03.070] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:05:03.070] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:04:13Z", "value" => "54"} [2026-06-17 06:05:03.089] [DEBUG] QUERY OK db=17.9ms queue=0.3ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:04:13Z", "54", "battery", 39080, ~N[2026-06-17 06:05:03], ~N[2026-06-17 06:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:03.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303747, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:04:13Z", message: "Battery level", status_log_id: 39080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:03], updated_at: ~N[2026-06-17 06:05:03]}} [2026-06-17 06:05:03.090] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:04:13Z", "value" => "online"} [2026-06-17 06:05:03.128] [DEBUG] QUERY OK db=35.7ms queue=0.1ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:04:13Z", "online", "network", 39080, ~N[2026-06-17 06:05:03], ~N[2026-06-17 06:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:03.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303749, itemkey: "network", value: "online", timestamp: "2026-06-17T06:04:13Z", message: "Network connectivity", status_log_id: 39080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:03], updated_at: ~N[2026-06-17 06:05:03]}} [2026-06-17 06:05:03.129] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:05:03.130] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=40.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:03], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:05:03.131] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:04:13Z", "value" => "0"} [2026-06-17 06:05:03.131] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:05:03.163] [DEBUG] QUERY OK db=31.2ms queue=1.1ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:04:13Z", "0", "cpu", 39080, ~N[2026-06-17 06:05:03], ~N[2026-06-17 06:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:03.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303751, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:04:13Z", message: "CPU usage percentage", status_log_id: 39080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:03], updated_at: ~N[2026-06-17 06:05:03]}} [2026-06-17 06:05:03.164] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:04:13Z", "value" => "1.0.0"} [2026-06-17 06:05:03.210] [DEBUG] QUERY OK db=43.0ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:04:13Z", "1.0.0", "parameter_config", 39080, ~N[2026-06-17 06:05:03], ~N[2026-06-17 06:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:03.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303753, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:04:13Z", message: "Current parameters version", status_log_id: 39080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:03], updated_at: ~N[2026-06-17 06:05:03]}} [2026-06-17 06:05:03.211] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:04:13Z", "value" => "1.0.1"} [2026-06-17 06:05:03.241] [DEBUG] QUERY OK db=28.0ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:04:13Z", "1.0.1", "emv_config", 39080, ~N[2026-06-17 06:05:03], ~N[2026-06-17 06:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:03.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303755, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:04:13Z", message: "Current EMV config version", status_log_id: 39080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:03], updated_at: ~N[2026-06-17 06:05:03]}} [2026-06-17 06:05:03.244] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:04:13Z", "value" => ""} [2026-06-17 06:05:03.273] [DEBUG] QUERY OK db=27.9ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:04:13Z", "keys_config", 39080, ~N[2026-06-17 06:05:03], ~N[2026-06-17 06:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:03.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303757, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:04:13Z", message: "Current keys config version", status_log_id: 39080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:03], updated_at: ~N[2026-06-17 06:05:03]}} [2026-06-17 06:05:03.273] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:04:13Z", "value" => ""} [2026-06-17 06:05:03.330] [DEBUG] QUERY OK db=54.8ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:04:13Z", "application", 39080, ~N[2026-06-17 06:05:03], ~N[2026-06-17 06:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:03.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303758, itemkey: "application", value: nil, timestamp: "2026-06-17T06:04:13Z", message: "Current application version", status_log_id: 39080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:03], updated_at: ~N[2026-06-17 06:05:03]}} [2026-06-17 06:05:03.332] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=58.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 06:05:03.332] [WARN ] Unexpected async result [2026-06-17 06:05:03.332] [WARN ] Unexpected async result [2026-06-17 06:05:03.338] [DEBUG] QUERY OK source="tms_terminals" db=4.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:05:03.374] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:05:40.988] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:05:40.988] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:04:51Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:04:51Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:04:51Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:04:51Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:04:51Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:04:51Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:04:51Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:04:51Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:04:51Z","vendor":"MoreFun"} [2026-06-17 06:05:40.988] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:04:51Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:04:51Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:04:51Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:04:51Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:04:51Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:04:51Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:04:51Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:04:51Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:04:51Z", "vendor" => "MoreFun"} [2026-06-17 06:05:40.988] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:05:40.988] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:05:40.990] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:05:40.991] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1270.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-06-17 06:05:40.992] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=354.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:05:40.994] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms 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-06-17 06:05:40.996] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=1.1ms idle=2.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-06-17 06:05:40.999] [DEBUG] QUERY OK source="pos_terminal" db=1.3ms idle=3.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:05:41.037] [DEBUG] QUERY OK source="pos_merchant" db=38.4ms idle=2.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:05:41.039] [DEBUG] QUERY OK db=0.9ms queue=0.5ms idle=1318.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 ["372916040000000"] [2026-06-17 06:05:41.039] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:05:41.040] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=40.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:05:41.041] [DEBUG] QUERY OK source="address" db=0.3ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:05:41.042] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:05:41.044] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:05:41.087] [DEBUG] QUERY OK db=41.6ms idle=5.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", "de98504b1c21eeae062fc53794271813fffc1cb849cc8861ff3ae3aa74ba8a86", 5538, 938, ~U[2026-06-17 06:05:41Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:05:41.088] [INFO ] AutoPushService: Created push log 29673 for MF919 params.zip [2026-06-17 06:05:41.088] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5538, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:05:41.088] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:05:41.089] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:05:41.090] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=48.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-06-17 06:05:41.096] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:05:41.119] [DEBUG] QUERY OK db=22.4ms idle=9.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", "9596020646e50df2c4ae5fd1d432d3ebb24524d829d4447638a3d5004a65643d", 1923, 17947, ~U[2026-06-17 06:05:41Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:05:41.120] [INFO ] AutoPushService: Created push log 29675 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:05:41.120] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1923, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:05:41.120] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:05:41.120] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:05:41.127] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=35.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-06-17 06:05:41.127] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:05:41.128] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:05:41.128] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:05:41.132] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:05:41.133] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:05:41.133] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:05:41.134] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 06:05:41.135] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:05:41.135] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:05:41.137] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=7.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:05:41.138] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:05:41.139] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:05:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:05:41.140] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms 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-06-17 06:05:41.141] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 06:05:41.142] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:05:41.144] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:05:41.169] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:05:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:05:41.197] [DEBUG] QUERY OK db=27.2ms idle=25.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:04:51Z", ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:05:41.197] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39082, oid: "organization_id", upload_time: "2026-06-17T06:04:51Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]} [2026-06-17 06:05:41.197] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:04:51Z", "value" => "online"} [2026-06-17 06:05:41.244] [DEBUG] QUERY OK db=45.9ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:04:51Z", "online", "status", 39082, ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:41.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303760, itemkey: "status", value: "online", timestamp: "2026-06-17T06:04:51Z", message: "Terminal status update", status_log_id: 39082, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]}} [2026-06-17 06:05:41.244] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:05:41.244] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:05:41.244] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:04:51Z", "value" => "54"} [2026-06-17 06:05:41.272] [DEBUG] QUERY OK db=26.6ms queue=0.2ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:04:51Z", "54", "battery", 39082, ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:41.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303762, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:04:51Z", message: "Battery level", status_log_id: 39082, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]}} [2026-06-17 06:05:41.272] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:04:51Z", "value" => "online"} [2026-06-17 06:05:41.287] [DEBUG] QUERY OK db=14.2ms queue=0.1ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:04:51Z", "online", "network", 39082, ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:41.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303764, itemkey: "network", value: "online", timestamp: "2026-06-17T06:04:51Z", message: "Network connectivity", status_log_id: 39082, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]}} [2026-06-17 06:05:41.287] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:05:41.288] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:05:41.288] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:04:51Z", "value" => "0"} [2026-06-17 06:05:41.320] [DEBUG] QUERY OK db=31.4ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:04:51Z", "0", "cpu", 39082, ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:41.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303766, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:04:51Z", message: "CPU usage percentage", status_log_id: 39082, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]}} [2026-06-17 06:05:41.320] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:04:51Z", "value" => "1.0.0"} [2026-06-17 06:05:41.355] [DEBUG] QUERY OK db=34.6ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:04:51Z", "1.0.0", "parameter_config", 39082, ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:41.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303768, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:04:51Z", message: "Current parameters version", status_log_id: 39082, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]}} [2026-06-17 06:05:41.356] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:04:51Z", "value" => "1.0.1"} [2026-06-17 06:05:41.375] [DEBUG] QUERY OK db=19.2ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:04:51Z", "1.0.1", "emv_config", 39082, ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:41.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303770, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:04:51Z", message: "Current EMV config version", status_log_id: 39082, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]}} [2026-06-17 06:05:41.376] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:04:51Z", "value" => ""} [2026-06-17 06:05:41.407] [DEBUG] QUERY OK db=31.2ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:04:51Z", "keys_config", 39082, ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:41.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303772, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:04:51Z", message: "Current keys config version", status_log_id: 39082, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]}} [2026-06-17 06:05:41.408] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:04:51Z", "value" => ""} [2026-06-17 06:05:41.441] [DEBUG] QUERY OK db=32.4ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:04:51Z", "application", 39082, ~N[2026-06-17 06:05:41], ~N[2026-06-17 06:05:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:05:41.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303774, itemkey: "application", value: nil, timestamp: "2026-06-17T06:04:51Z", message: "Current application version", status_log_id: 39082, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:05:41], updated_at: ~N[2026-06-17 06:05:41]}} [2026-06-17 06:05:41.441] [WARN ] Unexpected async result [2026-06-17 06:05:41.441] [WARN ] Unexpected async result [2026-06-17 06:05:41.445] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=1.3ms idle=34.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:05:41.455] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:06:02.602] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:06:02.602] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:05:12Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:05:12Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:05:12Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:05:12Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:05:12Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:05:12Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:05:12Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:05:12Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:05:12Z","vendor":"MoreFun"} [2026-06-17 06:06:02.602] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:05:12Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:05:12Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:05:12Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:05:12Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:05:12Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:05:12Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:05:12Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:05:12Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:05:12Z", "vendor" => "MoreFun"} [2026-06-17 06:06:02.602] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:06:02.602] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:06:02.602] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:06:02.614] [DEBUG] QUERY OK source="parameter_templates" db=11.5ms idle=1757.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-06-17 06:06:02.616] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=912.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:06:02.623] [DEBUG] QUERY OK source="parameter_template_values" db=6.9ms 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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 06:06:02.649] [DEBUG] QUERY OK source="parameter_definitions" db=13.1ms queue=12.1ms idle=7.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-06-17 06:06:02.651] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms idle=26.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:06:02.688] [DEBUG] QUERY OK source="pos_merchant" db=29.2ms queue=0.8ms idle=12.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:06:02.710] [DEBUG] QUERY OK db=3.4ms queue=4.2ms idle=1982.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 ["372916040000000"] [2026-06-17 06:06:02.710] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:06:02.720] [DEBUG] QUERY OK source="pos_terminal_data" db=8.1ms queue=0.1ms idle=24.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:06:02.722] [DEBUG] QUERY OK source="address" db=1.7ms idle=0.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:06:02.722] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:06:02.735] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:06:02.773] [DEBUG] QUERY OK db=30.8ms idle=19.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", "2a25e3cbf89b71691cb208fd2ad1e4861f33cc2ae6d19797b918cae76a979a13", 1955, 938, ~U[2026-06-17 06:06:02Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:06:02], ~N[2026-06-17 06:06:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:06:02.773] [INFO ] AutoPushService: Created push log 29677 for MF919 params.zip [2026-06-17 06:06:02.773] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1955, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:06:02.773] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:06:02.773] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:06:02.776] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=48.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-06-17 06:06:02.778] [ERROR] L3ConfigZipBuilder: Failed to read priv/static/mf919/1.0.1/YSDK_L3_configuration.xml: :enoent [2026-06-17 06:06:02.778] [ERROR] AutoPushService: L3ConfigZipBuilder failed for 98251226730002: "Failed to read YSDK_L3_configuration.xml: :enoent" [2026-06-17 06:06:02.784] [DEBUG] QUERY OK source="config_file_versions" db=3.7ms queue=0.6ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-06-17 06:06:02.784] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:06:02.786] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:06:02.786] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:06:02.806] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:06:02.806] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:06:02.818] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:06:02.827] [DEBUG] QUERY OK source="config_file_versions" db=9.4ms idle=33.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-06-17 06:06:02.839] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:06:02.840] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:06:02.855] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=58.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:06:02.863] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:06:02.892] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms idle=35.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:06:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:06:02.895] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=2.0ms idle=46.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-06-17 06:06:02.900] [DEBUG] QUERY OK source="config_file_versions" db=4.2ms idle=3.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-06-17 06:06:02.911] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:06:02.926] [DEBUG] QUERY OK source="tms_terminals" db=11.0ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:06:02.940] [DEBUG] QUERY OK source="tms_terminals" db=13.3ms idle=26.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:06:02.976] [DEBUG] QUERY OK db=31.3ms idle=21.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:05:12Z", ~N[2026-06-17 06:06:02], ~N[2026-06-17 06:06:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:06:02.977] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39084, oid: "organization_id", upload_time: "2026-06-17T06:05:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:02], updated_at: ~N[2026-06-17 06:06:02]} [2026-06-17 06:06:02.977] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:05:12Z", "value" => "online"} [2026-06-17 06:06:03.007] [DEBUG] QUERY OK db=29.1ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:05:12Z", "online", "status", 39084, ~N[2026-06-17 06:06:02], ~N[2026-06-17 06:06:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:03.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303783, itemkey: "status", value: "online", timestamp: "2026-06-17T06:05:12Z", message: "Terminal status update", status_log_id: 39084, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:02], updated_at: ~N[2026-06-17 06:06:02]}} [2026-06-17 06:06:03.012] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:06:03.015] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:05:12Z", "value" => "54"} [2026-06-17 06:06:03.023] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:06:03.030] [DEBUG] QUERY OK db=14.0ms queue=0.8ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:05:12Z", "54", "battery", 39084, ~N[2026-06-17 06:06:03], ~N[2026-06-17 06:06:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:03.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303784, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:05:12Z", message: "Battery level", status_log_id: 39084, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:03], updated_at: ~N[2026-06-17 06:06:03]}} [2026-06-17 06:06:03.040] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:05:12Z", "value" => "online"} [2026-06-17 06:06:03.063] [DEBUG] QUERY OK db=22.2ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:05:12Z", "online", "network", 39084, ~N[2026-06-17 06:06:03], ~N[2026-06-17 06:06:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:03.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303785, itemkey: "network", value: "online", timestamp: "2026-06-17T06:05:12Z", message: "Network connectivity", status_log_id: 39084, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:03], updated_at: ~N[2026-06-17 06:06:03]}} [2026-06-17 06:06:03.063] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:06:03.064] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:05:12Z", "value" => "0"} [2026-06-17 06:06:03.068] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:06:03.098] [DEBUG] QUERY OK db=34.0ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:05:12Z", "0", "cpu", 39084, ~N[2026-06-17 06:06:03], ~N[2026-06-17 06:06:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:03.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303786, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:05:12Z", message: "CPU usage percentage", status_log_id: 39084, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:03], updated_at: ~N[2026-06-17 06:06:03]}} [2026-06-17 06:06:03.101] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:05:12Z", "value" => "1.0.0"} [2026-06-17 06:06:03.125] [DEBUG] QUERY OK db=22.3ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:05:12Z", "1.0.0", "parameter_config", 39084, ~N[2026-06-17 06:06:03], ~N[2026-06-17 06:06:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:03.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303787, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:05:12Z", message: "Current parameters version", status_log_id: 39084, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:03], updated_at: ~N[2026-06-17 06:06:03]}} [2026-06-17 06:06:03.126] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:05:12Z", "value" => "1.0.1"} [2026-06-17 06:06:03.143] [DEBUG] QUERY OK db=16.9ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:05:12Z", "1.0.1", "emv_config", 39084, ~N[2026-06-17 06:06:03], ~N[2026-06-17 06:06:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:03.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303788, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:05:12Z", message: "Current EMV config version", status_log_id: 39084, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:03], updated_at: ~N[2026-06-17 06:06:03]}} [2026-06-17 06:06:03.144] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:05:12Z", "value" => ""} [2026-06-17 06:06:03.189] [DEBUG] QUERY OK db=42.2ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:05:12Z", "keys_config", 39084, ~N[2026-06-17 06:06:03], ~N[2026-06-17 06:06:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:03.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303789, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:05:12Z", message: "Current keys config version", status_log_id: 39084, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:03], updated_at: ~N[2026-06-17 06:06:03]}} [2026-06-17 06:06:03.190] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:05:12Z", "value" => ""} [2026-06-17 06:06:03.216] [DEBUG] QUERY OK db=25.9ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:05:12Z", "application", 39084, ~N[2026-06-17 06:06:03], ~N[2026-06-17 06:06:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:03.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303790, itemkey: "application", value: nil, timestamp: "2026-06-17T06:05:12Z", message: "Current application version", status_log_id: 39084, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:03], updated_at: ~N[2026-06-17 06:06:03]}} [2026-06-17 06:06:03.223] [WARN ] Unexpected async result [2026-06-17 06:06:03.224] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.4ms idle=35.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:06:03.261] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:06:08.382] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 06:06:08.383] [INFO ] Incoming JSON payload: {"oid":"d68d1de2-3758-4461-b32f-8117af702312","sn":"98251226730001","uploadTime":"2026-06-17T14:09:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"ram_free_mb","value":"911","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T14:09:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:09:19Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 06:06:08.386] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d68d1de2-3758-4461-b32f-8117af702312", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:09:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:09:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:09:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:09:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:09:19Z", "value" => "911"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:09:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:09:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:09:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:09:19Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:09:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:09:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T14:09:19Z", "vendor" => "morefun"} [2026-06-17 06:06:08.387] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 06:06:08.387] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 06:06:08.387] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 06:06:08.388] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1620.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 06:06:08.389] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=618.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.`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-06-17 06:06:08.389] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 06:06:08.390] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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:98 [2026-06-17 06:06:08.391] [INFO ] Terminal updated: 98251226730001 [2026-06-17 06:06:08.425] [DEBUG] QUERY OK source="tms_terminals" db=33.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:06:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:06:08.425] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 06:06:08.427] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=35.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:627 [2026-06-17 06:06:08.441] [DEBUG] QUERY OK source="tms_terminals" db=13.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:06:08.452] [DEBUG] QUERY OK db=10.7ms queue=0.1ms idle=13.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d68d1de2-3758-4461-b32f-8117af702312", "2026-06-17T14:09:19Z", ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:06:08.452] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39085, oid: "d68d1de2-3758-4461-b32f-8117af702312", upload_time: "2026-06-17T14:09:19Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]} [2026-06-17 06:06:08.453] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:09:19Z", "value" => "morefun"} [2026-06-17 06:06:08.517] [DEBUG] QUERY OK db=22.1ms queue=41.3ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "morefun", "vendor", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303791, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.517] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:09:19Z", "value" => "kiosk_launcher"} [2026-06-17 06:06:08.571] [DEBUG] QUERY OK db=11.7ms queue=41.5ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "kiosk_launcher", "model", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303793, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.571] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:09:19Z", "value" => "1.0"} [2026-06-17 06:06:08.596] [DEBUG] QUERY OK db=24.7ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "1.0", "app_version", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303795, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.597] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:09:19Z", "value" => "13"} [2026-06-17 06:06:08.632] [DEBUG] QUERY OK db=33.9ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "13", "android_version", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303797, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.634] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:09:19Z", "value" => "911"} [2026-06-17 06:06:08.657] [DEBUG] QUERY OK db=22.1ms idle=4.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "911", "ram_free_mb", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303799, itemkey: "ram_free_mb", value: "911", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.657] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:09:19Z", "value" => "WIFI"} [2026-06-17 06:06:08.694] [DEBUG] QUERY OK db=27.2ms queue=9.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "WIFI", "network_type", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303801, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.696] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:09:19Z", "value" => "true"} [2026-06-17 06:06:08.734] [DEBUG] QUERY OK db=37.9ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "true", "kiosk_active", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303803, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.734] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:09:19Z", "value" => ""} [2026-06-17 06:06:08.748] [DEBUG] QUERY OK db=12.3ms queue=1.3ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:09:19Z", "sim_operator", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303805, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.749] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"} [2026-06-17 06:06:08.788] [DEBUG] QUERY OK db=35.0ms queue=4.1ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "UNKNOWN", "sim_number", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303807, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.789] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"} [2026-06-17 06:06:08.814] [DEBUG] QUERY OK db=25.4ms queue=0.1ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "UNKNOWN", "sim_iccid", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303809, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.815] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"} [2026-06-17 06:06:08.829] [DEBUG] QUERY OK db=14.0ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "UNKNOWN", "sim_imsi", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303811, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.830] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"} [2026-06-17 06:06:08.840] [DEBUG] QUERY OK db=10.4ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "UNKNOWN", "sim_iccid2", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303812, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.841] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:09:19Z", "value" => "UNKNOWN"} [2026-06-17 06:06:08.897] [DEBUG] QUERY OK db=54.0ms queue=0.9ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "UNKNOWN", "sim_imsi2", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303814, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.899] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:09:19Z", "value" => "5"} [2026-06-17 06:06:08.930] [DEBUG] QUERY OK db=30.5ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "5", "data_usage_mb", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303816, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.930] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:09:19Z", "value" => "0"} [2026-06-17 06:06:08.951] [DEBUG] QUERY OK db=20.2ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "0", "mobile_data_mb", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303818, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.952] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:09:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 06:06:08.989] [DEBUG] QUERY OK db=35.8ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:09:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39085, ~N[2026-06-17 06:06:08], ~N[2026-06-17 06:06:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:08.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303820, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T14:09:19Z", message: nil, status_log_id: 39085, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:08], updated_at: ~N[2026-06-17 06:06:08]}} [2026-06-17 06:06:08.991] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=38.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:06:08.995] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:06:26.421] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:06:26.422] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:05:36Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:05:36Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:05:36Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:05:36Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:05:36Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:05:36Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:05:36Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:05:36Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:05:36Z","vendor":"MoreFun"} [2026-06-17 06:06:26.422] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:05:36Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:05:36Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:05:36Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:05:36Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:05:36Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:05:36Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:05:36Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:05:36Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:05:36Z", "vendor" => "MoreFun"} [2026-06-17 06:06:26.422] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:06:26.424] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:06:26.425] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:06:26.427] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=693.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-06-17 06:06:26.430] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=596.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:06:26.433] [DEBUG] QUERY OK source="parameter_template_values" db=2.7ms idle=3.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-06-17 06:06:26.435] [DEBUG] QUERY OK source="parameter_definitions" db=1.3ms queue=0.5ms idle=3.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-06-17 06:06:26.437] [DEBUG] QUERY OK source="pos_terminal" db=1.5ms idle=2.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:06:26.476] [DEBUG] QUERY OK source="pos_merchant" db=38.6ms idle=2.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:06:26.479] [DEBUG] QUERY OK db=0.9ms queue=1.7ms idle=743.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 ["372916040000000"] [2026-06-17 06:06:26.479] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:06:26.481] [DEBUG] QUERY OK source="pos_terminal_data" db=1.4ms idle=42.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:06:26.485] [DEBUG] QUERY OK source="address" db=3.6ms idle=5.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:06:26.485] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:06:26.487] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:06:26.527] [DEBUG] QUERY OK db=39.4ms idle=6.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", "86e66add4c3807c399c5613845dcec98c3eb331ff8580e901bee510f64f33a5d", 5890, 938, ~U[2026-06-17 06:06:26Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:06:26.527] [INFO ] AutoPushService: Created push log 29679 for MF919 params.zip [2026-06-17 06:06:26.528] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5890, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:06:26.528] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:06:26.528] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:06:26.529] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms idle=42.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-06-17 06:06:26.538] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:06:26.559] [DEBUG] QUERY OK db=17.8ms queue=0.4ms idle=13.3ms 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", "061c010017589a62d92a61dad3177f437adf27ccf11e0dc4806b9412f2d1c4b6", 5954, 17947, ~U[2026-06-17 06:06:26Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:06:26.559] [INFO ] AutoPushService: Created push log 29680 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:06:26.559] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 5954, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:06:26.559] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:06:26.559] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:06:26.561] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=31.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-06-17 06:06:26.561] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:06:26.562] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:06:26.562] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:06:26.563] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:06:26.563] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:06:26.564] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:06:26.566] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms 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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 06:06:26.566] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:06:26.566] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:06:26.570] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms queue=0.9ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:06:26.572] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:06:26.574] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=6.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-06-17 06:06:26.575] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=4.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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 06:06:26.576] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:06:26.577] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:06:26.616] [DEBUG] QUERY OK db=37.3ms idle=2.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:05:36Z", ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:06:26.617] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39088, oid: "organization_id", upload_time: "2026-06-17T06:05:36Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]} [2026-06-17 06:06:26.617] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:05:36Z", "value" => "online"} [2026-06-17 06:06:26.641] [DEBUG] QUERY OK db=22.9ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:05:36Z", "online", "status", 39088, ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:26.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303824, itemkey: "status", value: "online", timestamp: "2026-06-17T06:05:36Z", message: "Terminal status update", status_log_id: 39088, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]}} [2026-06-17 06:06:26.641] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:06:26.642] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=26.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:26], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:06:26.643] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:05:36Z", "value" => "54"} [2026-06-17 06:06:26.643] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:06:26.656] [DEBUG] QUERY OK db=13.2ms idle=2.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:05:36Z", "54", "battery", 39088, ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:26.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303826, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:05:36Z", message: "Battery level", status_log_id: 39088, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]}} [2026-06-17 06:06:26.658] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:05:36Z", "value" => "online"} [2026-06-17 06:06:26.690] [DEBUG] QUERY OK db=31.1ms queue=0.5ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:05:36Z", "online", "network", 39088, ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:26.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303828, itemkey: "network", value: "online", timestamp: "2026-06-17T06:05:36Z", message: "Network connectivity", status_log_id: 39088, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]}} [2026-06-17 06:06:26.690] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:06:26.691] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=34.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:26], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:06:26.691] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:05:36Z", "value" => "0"} [2026-06-17 06:06:26.691] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:06:26.727] [DEBUG] QUERY OK db=34.4ms queue=1.1ms 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-06-17T06:05:36Z", "0", "cpu", 39088, ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:26.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303830, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:05:36Z", message: "CPU usage percentage", status_log_id: 39088, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]}} [2026-06-17 06:06:26.728] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:05:36Z", "value" => "1.0.0"} [2026-06-17 06:06:26.745] [DEBUG] QUERY OK db=16.5ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:05:36Z", "1.0.0", "parameter_config", 39088, ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:26.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303832, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:05:36Z", message: "Current parameters version", status_log_id: 39088, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]}} [2026-06-17 06:06:26.745] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:05:36Z", "value" => "1.0.1"} [2026-06-17 06:06:26.772] [DEBUG] QUERY OK db=26.0ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:05:36Z", "1.0.1", "emv_config", 39088, ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:26.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303834, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:05:36Z", message: "Current EMV config version", status_log_id: 39088, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]}} [2026-06-17 06:06:26.772] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:05:36Z", "value" => ""} [2026-06-17 06:06:26.841] [DEBUG] QUERY OK db=26.6ms queue=40.8ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:05:36Z", "keys_config", 39088, ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:26.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303836, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:05:36Z", message: "Current keys config version", status_log_id: 39088, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]}} [2026-06-17 06:06:26.843] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:05:36Z", "value" => ""} [2026-06-17 06:06:26.913] [DEBUG] QUERY OK db=24.2ms queue=41.6ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:05:36Z", "application", 39088, ~N[2026-06-17 06:06:26], ~N[2026-06-17 06:06:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:26.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303838, itemkey: "application", value: nil, timestamp: "2026-06-17T06:05:36Z", message: "Current application version", status_log_id: 39088, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:26], updated_at: ~N[2026-06-17 06:06:26]}} [2026-06-17 06:06:26.915] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=73.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 06:06:26.917] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:06:26.915] [WARN ] Unexpected async result [2026-06-17 06:06:26.918] [WARN ] Unexpected async result [2026-06-17 06:06:26.940] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:06:40.211] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:06:40.211] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:05:50Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:05:50Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:05:50Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:05:50Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:05:50Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:05:50Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:05:50Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:05:50Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:05:50Z","vendor":"MoreFun"} [2026-06-17 06:06:40.211] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:05:50Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:05:50Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:05:50Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:05:50Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:05:50Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:05:50Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:05:50Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:05:50Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:05:50Z", "vendor" => "MoreFun"} [2026-06-17 06:06:40.212] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:06:40.212] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:06:40.212] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:06:40.215] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=472.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-06-17 06:06:40.217] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.1ms idle=328.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:06:40.220] [DEBUG] QUERY OK source="parameter_template_values" db=3.1ms 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-06-17 06:06:40.223] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=0.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-06-17 06:06:40.224] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=3.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:06:40.264] [DEBUG] QUERY OK source="pos_merchant" db=39.2ms queue=0.3ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:06:40.266] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=525.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 ["372916040000000"] [2026-06-17 06:06:40.266] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:06:40.267] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:06:40.267] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.6ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:06:40.268] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:06:40.269] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:06:40.287] [DEBUG] QUERY OK db=16.9ms idle=2.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", "415f789cd30af26c21259fa57de7e20976d9566f2f93e46a232c0bef695a1a5e", 6114, 938, ~U[2026-06-17 06:06:40Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:06:40.288] [INFO ] AutoPushService: Created push log 29682 for MF919 params.zip [2026-06-17 06:06:40.288] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 6114, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:06:40.288] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:06:40.288] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:06:40.290] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=1.1ms idle=21.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-06-17 06:06:40.297] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:06:40.340] [DEBUG] QUERY OK db=41.7ms queue=0.1ms idle=11.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", "8886915fa762a62a893f059b858fa5523007d569efc3e77fcbb2ddae335e5f97", 2051, 17947, ~U[2026-06-17 06:06:40Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:06:40.340] [INFO ] AutoPushService: Created push log 29683 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:06:40.341] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2051, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:06:40.341] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:06:40.341] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:06:40.342] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=50.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-06-17 06:06:40.343] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:06:40.343] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:06:40.344] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:06:40.345] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:06:40.345] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:06:40.345] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:06:40.346] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=3.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-06-17 06:06:40.347] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:06:40.347] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:06:40.348] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:06:40.348] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:06:40.349] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms 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-06-17 06:06:40.350] [DEBUG] QUERY OK source="config_file_versions" db=0.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-06-17 06:06:40.350] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:06:40.351] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:06:40.354] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:06:40.372] [DEBUG] QUERY OK db=17.3ms idle=3.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:05:50Z", ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:06:40.372] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39090, oid: "organization_id", upload_time: "2026-06-17T06:05:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]} [2026-06-17 06:06:40.372] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:05:50Z", "value" => "online"} [2026-06-17 06:06:40.406] [DEBUG] QUERY OK db=32.2ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:05:50Z", "online", "status", 39090, ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:40.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303840, itemkey: "status", value: "online", timestamp: "2026-06-17T06:05:50Z", message: "Terminal status update", status_log_id: 39090, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]}} [2026-06-17 06:06:40.407] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:06:40.408] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=35.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:40], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:06:40.408] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:05:50Z", "value" => "54"} [2026-06-17 06:06:40.408] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:06:40.434] [DEBUG] QUERY OK db=25.3ms queue=0.2ms idle=1.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:05:50Z", "54", "battery", 39090, ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:40.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303842, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:05:50Z", message: "Battery level", status_log_id: 39090, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]}} [2026-06-17 06:06:40.434] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:05:50Z", "value" => "online"} [2026-06-17 06:06:40.455] [DEBUG] QUERY OK db=21.0ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:05:50Z", "online", "network", 39090, ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:40.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303844, itemkey: "network", value: "online", timestamp: "2026-06-17T06:05:50Z", message: "Network connectivity", status_log_id: 39090, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]}} [2026-06-17 06:06:40.456] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:06:40.457] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=22.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:40], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:06:40.457] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:05:50Z", "value" => "0"} [2026-06-17 06:06:40.457] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:06:40.492] [DEBUG] QUERY OK db=34.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-06-17T06:05:50Z", "0", "cpu", 39090, ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:40.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303846, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:05:50Z", message: "CPU usage percentage", status_log_id: 39090, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]}} [2026-06-17 06:06:40.492] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:05:50Z", "value" => "1.0.0"} [2026-06-17 06:06:40.525] [DEBUG] QUERY OK db=32.1ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:05:50Z", "1.0.0", "parameter_config", 39090, ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:40.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303848, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:05:50Z", message: "Current parameters version", status_log_id: 39090, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]}} [2026-06-17 06:06:40.525] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:05:50Z", "value" => "1.0.1"} [2026-06-17 06:06:40.539] [DEBUG] QUERY OK db=12.1ms queue=0.8ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:05:50Z", "1.0.1", "emv_config", 39090, ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:40.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303850, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:05:50Z", message: "Current EMV config version", status_log_id: 39090, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]}} [2026-06-17 06:06:40.539] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:05:50Z", "value" => ""} [2026-06-17 06:06:40.570] [DEBUG] QUERY OK db=29.9ms queue=0.6ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:05:50Z", "keys_config", 39090, ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:40.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303852, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:05:50Z", message: "Current keys config version", status_log_id: 39090, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]}} [2026-06-17 06:06:40.570] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:05:50Z", "value" => ""} [2026-06-17 06:06:40.614] [DEBUG] QUERY OK db=43.4ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:05:50Z", "application", 39090, ~N[2026-06-17 06:06:40], ~N[2026-06-17 06:06:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:40.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303854, itemkey: "application", value: nil, timestamp: "2026-06-17T06:05:50Z", message: "Current application version", status_log_id: 39090, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:40], updated_at: ~N[2026-06-17 06:06:40]}} [2026-06-17 06:06:40.616] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=44.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 06:06:40.617] [WARN ] Unexpected async result [2026-06-17 06:06:40.621] [WARN ] Unexpected async result [2026-06-17 06:06:40.626] [DEBUG] QUERY OK source="tms_terminals" db=9.0ms queue=0.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:06:40.632] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:06:54.212] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:06:54.212] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:06:04Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:06:04Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:06:04Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:06:04Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:06:04Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:06:04Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:06:04Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:06:04Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:06:04Z","vendor":"MoreFun"} [2026-06-17 06:06:54.213] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:04Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:04Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:04Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:04Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:04Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:04Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:04Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:04Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:06:04Z", "vendor" => "MoreFun"} [2026-06-17 06:06:54.213] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:06:54.213] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:06:54.213] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:06:54.214] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1292.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 06:06:54.216] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=291.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:06:54.218] [DEBUG] QUERY OK source="parameter_template_values" db=1.9ms 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-06-17 06:06:54.225] [DEBUG] QUERY OK source="parameter_definitions" db=1.3ms queue=2.9ms idle=4.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-06-17 06:06:54.226] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=7.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:06:54.266] [DEBUG] QUERY OK source="pos_merchant" db=40.5ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:06:54.268] [DEBUG] QUERY OK db=1.1ms queue=0.5ms idle=527.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 ["372916040000000"] [2026-06-17 06:06:54.268] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:06:54.270] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms idle=43.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:06:54.270] [DEBUG] QUERY OK source="address" db=0.4ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:06:54.271] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:06:54.272] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:06:54.300] [DEBUG] QUERY OK db=26.3ms idle=3.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", "d0cae059add441143051853d11ca239721e1b3adbba34fd190704510a399f739", 6274, 939, ~U[2026-06-17 06:06:54Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:06:54.300] [INFO ] AutoPushService: Created push log 29684 for MF919 params.zip [2026-06-17 06:06:54.301] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 6274, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:06:54.301] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:06:54.301] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:06:54.303] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=31.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-06-17 06:06:54.309] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:06:54.329] [DEBUG] QUERY OK db=18.8ms idle=10.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", "dc2227429413c233d718b61eddd2c3845c3f3b9bc4566212f4e37caa6eacad8b", 2115, 17947, ~U[2026-06-17 06:06:54Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:06:54.329] [INFO ] AutoPushService: Created push log 29686 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:06:54.329] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2115, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:06:54.330] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:06:54.330] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:06:54.332] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=28.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-06-17 06:06:54.332] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:06:54.333] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=3.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:06:54.333] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:06:54.335] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:06:54.335] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:06:54.336] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:06:54.337] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=4.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-06-17 06:06:54.337] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:06:54.338] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:06:54.339] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:06:54.339] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:06:54.341] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:06:54], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:06:54.342] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=3.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-06-17 06:06:54.343] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=0.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-06-17 06:06:54.343] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:06:54.344] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:06:54.370] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:06:54], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:06:54.405] [DEBUG] QUERY OK db=34.1ms idle=26.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:06:04Z", ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:06:54.405] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39092, oid: "organization_id", upload_time: "2026-06-17T06:06:04Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]} [2026-06-17 06:06:54.405] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:04Z", "value" => "online"} [2026-06-17 06:06:54.422] [DEBUG] QUERY OK db=16.5ms queue=0.3ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:06:04Z", "online", "status", 39092, ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:54.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303856, itemkey: "status", value: "online", timestamp: "2026-06-17T06:06:04Z", message: "Terminal status update", status_log_id: 39092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]}} [2026-06-17 06:06:54.423] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:06:54.426] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:06:54.425] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:04Z", "value" => "54"} [2026-06-17 06:06:54.471] [DEBUG] QUERY OK db=43.6ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:06:04Z", "54", "battery", 39092, ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:54.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303858, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:06:04Z", message: "Battery level", status_log_id: 39092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]}} [2026-06-17 06:06:54.471] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:04Z", "value" => "online"} [2026-06-17 06:06:54.498] [DEBUG] QUERY OK db=25.9ms queue=0.2ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:06:04Z", "online", "network", 39092, ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:54.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303860, itemkey: "network", value: "online", timestamp: "2026-06-17T06:06:04Z", message: "Network connectivity", status_log_id: 39092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]}} [2026-06-17 06:06:54.501] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:06:54.501] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:04Z", "value" => "0"} [2026-06-17 06:06:54.501] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:06:54.517] [DEBUG] QUERY OK db=15.5ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:06:04Z", "0", "cpu", 39092, ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:54.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303862, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:06:04Z", message: "CPU usage percentage", status_log_id: 39092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]}} [2026-06-17 06:06:54.517] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:04Z", "value" => "1.0.0"} [2026-06-17 06:06:54.550] [DEBUG] QUERY OK db=31.0ms queue=0.1ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:06:04Z", "1.0.0", "parameter_config", 39092, ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:54.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303864, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:06:04Z", message: "Current parameters version", status_log_id: 39092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]}} [2026-06-17 06:06:54.550] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:04Z", "value" => "1.0.1"} [2026-06-17 06:06:54.589] [DEBUG] QUERY OK db=38.0ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:06:04Z", "1.0.1", "emv_config", 39092, ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:54.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303866, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:06:04Z", message: "Current EMV config version", status_log_id: 39092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]}} [2026-06-17 06:06:54.589] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:04Z", "value" => ""} [2026-06-17 06:06:54.603] [DEBUG] QUERY OK db=14.2ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:06:04Z", "keys_config", 39092, ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:54.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303868, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:06:04Z", message: "Current keys config version", status_log_id: 39092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]}} [2026-06-17 06:06:54.604] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:04Z", "value" => ""} [2026-06-17 06:06:54.641] [DEBUG] QUERY OK db=35.2ms queue=0.1ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:06:04Z", "application", 39092, ~N[2026-06-17 06:06:54], ~N[2026-06-17 06:06:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:06:54.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303870, itemkey: "application", value: nil, timestamp: "2026-06-17T06:06:04Z", message: "Current application version", status_log_id: 39092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:06:54], updated_at: ~N[2026-06-17 06:06:54]}} [2026-06-17 06:06:54.641] [WARN ] Unexpected async result [2026-06-17 06:06:54.641] [WARN ] Unexpected async result [2026-06-17 06:06:54.643] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.2ms idle=37.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:06:54.662] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:07:01.364] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:07:01.364] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:06:11Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:06:11Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:06:11Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:06:11Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:06:11Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:06:11Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:06:11Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:06:11Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:06:11Z","vendor":"MoreFun"} [2026-06-17 06:07:01.365] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:11Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:11Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:11Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:11Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:11Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:11Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:11Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:11Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:06:11Z", "vendor" => "MoreFun"} [2026-06-17 06:07:01.365] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:07:01.365] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:07:01.365] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:07:01.368] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=520.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-06-17 06:07:01.369] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=426.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:07:01.370] [DEBUG] QUERY OK source="parameter_template_values" db=0.3ms 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-06-17 06:07:01.371] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.5ms idle=1.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-06-17 06:07:01.373] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=2.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:07:01.413] [DEBUG] QUERY OK source="pos_merchant" db=40.3ms queue=0.2ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:07:01.416] [DEBUG] QUERY OK db=1.8ms queue=0.3ms idle=1674.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 ["372916040000000"] [2026-06-17 06:07:01.416] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:07:01.419] [DEBUG] QUERY OK source="pos_terminal_data" db=2.1ms idle=44.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:07:01.421] [DEBUG] QUERY OK source="address" db=1.9ms idle=5.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:07:01.421] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:07:01.426] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:07:01.475] [DEBUG] QUERY OK db=46.0ms idle=9.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", "55328e8984ca076ea8ed4bdf0cd2ad17fa9c5fe7803f39162ac4927a53dba70e", 6434, 937, ~U[2026-06-17 06:07:01Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:07:01.475] [INFO ] AutoPushService: Created push log 29688 for MF919 params.zip [2026-06-17 06:07:01.475] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 6434, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:07:01.476] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:07:01.476] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:07:01.480] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms idle=55.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-06-17 06:07:01.499] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:07:01.535] [DEBUG] QUERY OK db=28.5ms idle=32.3ms 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", "ae1fd5ed4c98258183c12401f0a01b4e7e338af39e52db0736f53661c0491556", 6498, 17947, ~U[2026-06-17 06:07:01Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:07:01.537] [INFO ] AutoPushService: Created push log 29689 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:07:01.540] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6498, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:07:01.540] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:07:01.541] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:07:01.551] [DEBUG] QUERY OK source="config_file_versions" db=8.6ms idle=62.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-06-17 06:07:01.551] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:07:01.553] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:07:01.554] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:07:01.566] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:07:01.566] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:07:01.566] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:07:01.580] [DEBUG] QUERY OK source="config_file_versions" db=5.1ms queue=7.0ms idle=15.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-06-17 06:07:01.584] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:07:01.584] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:07:01.587] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=31.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:07:01.588] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:07:01.619] [DEBUG] QUERY OK source="tms_terminals" db=27.9ms idle=12.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:07:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:07:01.621] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.6ms idle=32.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-06-17 06:07:01.627] [DEBUG] QUERY OK source="config_file_versions" db=4.1ms 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-06-17 06:07:01.628] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:07:01.629] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:07:01.658] [DEBUG] QUERY OK source="tms_terminals" db=28.2ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:07:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:07:01.681] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=28.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:06:11Z", ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:07:01.682] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39094, oid: "organization_id", upload_time: "2026-06-17T06:06:11Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]} [2026-06-17 06:07:01.682] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:11Z", "value" => "online"} [2026-06-17 06:07:01.709] [DEBUG] QUERY OK db=22.4ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:06:11Z", "online", "status", 39094, ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:01.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303876, itemkey: "status", value: "online", timestamp: "2026-06-17T06:06:11Z", message: "Terminal status update", status_log_id: 39094, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]}} [2026-06-17 06:07:01.709] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:07:01.710] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:11Z", "value" => "54"} [2026-06-17 06:07:01.712] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:07:01.742] [DEBUG] QUERY OK db=26.8ms queue=5.4ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:06:11Z", "54", "battery", 39094, ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:01.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303878, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:06:11Z", message: "Battery level", status_log_id: 39094, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]}} [2026-06-17 06:07:01.743] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:11Z", "value" => "online"} [2026-06-17 06:07:01.782] [DEBUG] QUERY OK db=36.9ms queue=1.9ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:06:11Z", "online", "network", 39094, ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:01.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303880, itemkey: "network", value: "online", timestamp: "2026-06-17T06:06:11Z", message: "Network connectivity", status_log_id: 39094, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]}} [2026-06-17 06:07:01.783] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:07:01.786] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:07:01.785] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:11Z", "value" => "0"} [2026-06-17 06:07:01.805] [DEBUG] QUERY OK db=17.8ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:06:11Z", "0", "cpu", 39094, ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:01.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303882, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:06:11Z", message: "CPU usage percentage", status_log_id: 39094, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]}} [2026-06-17 06:07:01.806] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:11Z", "value" => "1.0.0"} [2026-06-17 06:07:01.845] [DEBUG] QUERY OK db=38.7ms queue=0.1ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:06:11Z", "1.0.0", "parameter_config", 39094, ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:01.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303883, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:06:11Z", message: "Current parameters version", status_log_id: 39094, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]}} [2026-06-17 06:07:01.846] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:11Z", "value" => "1.0.1"} [2026-06-17 06:07:01.872] [DEBUG] QUERY OK db=26.1ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:06:11Z", "1.0.1", "emv_config", 39094, ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:01.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303884, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:06:11Z", message: "Current EMV config version", status_log_id: 39094, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]}} [2026-06-17 06:07:01.872] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:11Z", "value" => ""} [2026-06-17 06:07:01.893] [DEBUG] QUERY OK db=20.5ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:06:11Z", "keys_config", 39094, ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:01.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303885, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:06:11Z", message: "Current keys config version", status_log_id: 39094, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]}} [2026-06-17 06:07:01.894] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:11Z", "value" => ""} [2026-06-17 06:07:01.919] [DEBUG] QUERY OK db=24.8ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:06:11Z", "application", 39094, ~N[2026-06-17 06:07:01], ~N[2026-06-17 06:07:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:01.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303886, itemkey: "application", value: nil, timestamp: "2026-06-17T06:06:11Z", message: "Current application version", status_log_id: 39094, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:01], updated_at: ~N[2026-06-17 06:07:01]}} [2026-06-17 06:07:01.921] [WARN ] Unexpected async result [2026-06-17 06:07:01.921] [WARN ] Unexpected async result [2026-06-17 06:07:01.924] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=0.3ms idle=28.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:07:01.968] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:07:09.847] [INFO ] Running offline device check... [2026-06-17 06:07:09.847] [INFO ] Starting offline device check... [2026-06-17 06:07:09.849] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.5ms idle=865.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:677 [2026-06-17 06:07:09.856] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=95.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:688 [2026-06-17 06:07:09.863] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms queue=0.4ms idle=8.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:688 [2026-06-17 06:07:09.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=7.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:688 [2026-06-17 06:07:09.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.866] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.867] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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:688 [2026-06-17 06:07:09.869] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.878] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.879] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.883] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms 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:688 [2026-06-17 06:07:09.889] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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:688 [2026-06-17 06:07:09.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.891] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.902] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.903] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.905] [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:688 [2026-06-17 06:07:09.906] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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:688 [2026-06-17 06:07:09.917] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.918] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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:688 [2026-06-17 06:07:09.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=7.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:688 [2026-06-17 06:07:09.929] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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:688 [2026-06-17 06:07:09.931] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.933] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.942] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.943] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.944] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.946] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.946] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.947] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:07:09.947] [INFO ] Offline device check completed. Found 37 offline devices, updated 0 statuses. [2026-06-17 06:07:09.947] [INFO ] Offline device check completed successfully [2026-06-17 06:07:36.245] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:07:36.245] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:06:46Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:06:46Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:06:46Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:06:46Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:06:46Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:06:46Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:06:46Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:06:46Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:06:46Z","vendor":"MoreFun"} [2026-06-17 06:07:36.245] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:46Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:46Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:46Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:46Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:46Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:46Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:46Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:46Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:06:46Z", "vendor" => "MoreFun"} [2026-06-17 06:07:36.245] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:07:36.245] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:07:36.245] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:07:36.252] [DEBUG] QUERY OK source="parameter_templates" db=6.0ms idle=1182.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 06:07:36.253] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms idle=186.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:07:36.255] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=3.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-06-17 06:07:36.262] [DEBUG] QUERY OK source="parameter_definitions" db=2.0ms queue=4.1ms idle=2.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-06-17 06:07:36.266] [DEBUG] QUERY OK source="pos_terminal" db=2.9ms idle=7.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:07:36.302] [DEBUG] QUERY OK source="pos_merchant" db=35.0ms queue=0.8ms idle=4.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:07:36.306] [DEBUG] QUERY OK db=1.1ms queue=2.5ms idle=1546.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 ["372916040000000"] [2026-06-17 06:07:36.306] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:07:36.311] [DEBUG] QUERY OK source="pos_terminal_data" db=4.5ms idle=41.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:07:36.313] [DEBUG] QUERY OK source="address" db=1.8ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:07:36.314] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:07:36.316] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:07:36.338] [DEBUG] QUERY OK db=21.7ms 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", "d0c1b63c883ac1a2fa8ac842f0f0780308ef990692b2ee38c5e0fb6069536381", 6626, 937, ~U[2026-06-17 06:07:36Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:07:36.338] [INFO ] AutoPushService: Created push log 29691 for MF919 params.zip [2026-06-17 06:07:36.339] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 6626, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:07:36.339] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:07:36.339] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:07:36.340] [DEBUG] QUERY OK source="config_file_versions" db=1.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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 06:07:36.349] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:07:36.397] [DEBUG] QUERY OK db=46.0ms idle=12.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", "f2859f339329820887614926f803d46fccfd0754ab06937b5358e0d7f6f22a24", 6690, 17947, ~U[2026-06-17 06:07:36Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:07:36.397] [INFO ] AutoPushService: Created push log 29692 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:07:36.397] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6690, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:07:36.397] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:07:36.397] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:07:36.398] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=57.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-06-17 06:07:36.399] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:07:36.411] [DEBUG] QUERY OK source="tms_terminals" db=12.1ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:07:36.411] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:07:36.415] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:07:36.415] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:07:36.416] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:07:36.418] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=17.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-06-17 06:07:36.430] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:07:36.430] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:07:36.432] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=23.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:07:36.432] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:07:36.466] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms idle=15.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:07:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:07:36.468] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=34.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-06-17 06:07:36.470] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.2ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 06:07:36.470] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:07:36.471] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:07:36.505] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:07:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:07:36.525] [DEBUG] QUERY OK db=18.8ms idle=35.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:06:46Z", ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:07:36.525] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39096, oid: "organization_id", upload_time: "2026-06-17T06:06:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]} [2026-06-17 06:07:36.525] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:46Z", "value" => "online"} [2026-06-17 06:07:36.545] [DEBUG] QUERY OK db=19.3ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:06:46Z", "online", "status", 39096, ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:36.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303890, itemkey: "status", value: "online", timestamp: "2026-06-17T06:06:46Z", message: "Terminal status update", status_log_id: 39096, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]}} [2026-06-17 06:07:36.545] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:07:36.545] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:46Z", "value" => "54"} [2026-06-17 06:07:36.546] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:07:36.583] [DEBUG] QUERY OK db=36.4ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:06:46Z", "54", "battery", 39096, ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:36.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303892, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:06:46Z", message: "Battery level", status_log_id: 39096, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]}} [2026-06-17 06:07:36.583] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:46Z", "value" => "online"} [2026-06-17 06:07:36.608] [DEBUG] QUERY OK db=23.9ms queue=0.4ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:06:46Z", "online", "network", 39096, ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:36.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303894, itemkey: "network", value: "online", timestamp: "2026-06-17T06:06:46Z", message: "Network connectivity", status_log_id: 39096, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]}} [2026-06-17 06:07:36.609] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:07:36.609] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:46Z", "value" => "0"} [2026-06-17 06:07:36.609] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:07:36.628] [DEBUG] QUERY OK db=18.1ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:06:46Z", "0", "cpu", 39096, ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:36.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303896, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:06:46Z", message: "CPU usage percentage", status_log_id: 39096, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]}} [2026-06-17 06:07:36.629] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:46Z", "value" => "1.0.0"} [2026-06-17 06:07:36.667] [DEBUG] QUERY OK db=36.6ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:06:46Z", "1.0.0", "parameter_config", 39096, ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:36.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303898, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:06:46Z", message: "Current parameters version", status_log_id: 39096, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]}} [2026-06-17 06:07:36.668] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:46Z", "value" => "1.0.1"} [2026-06-17 06:07:36.701] [DEBUG] QUERY OK db=32.6ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:06:46Z", "1.0.1", "emv_config", 39096, ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:36.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303900, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:06:46Z", message: "Current EMV config version", status_log_id: 39096, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]}} [2026-06-17 06:07:36.702] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:46Z", "value" => ""} [2026-06-17 06:07:36.722] [DEBUG] QUERY OK db=20.3ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:06:46Z", "keys_config", 39096, ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:36.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303901, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:06:46Z", message: "Current keys config version", status_log_id: 39096, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]}} [2026-06-17 06:07:36.724] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:46Z", "value" => ""} [2026-06-17 06:07:36.750] [DEBUG] QUERY OK db=25.0ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:06:46Z", "application", 39096, ~N[2026-06-17 06:07:36], ~N[2026-06-17 06:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:36.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303902, itemkey: "application", value: nil, timestamp: "2026-06-17T06:06:46Z", message: "Current application version", status_log_id: 39096, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:36], updated_at: ~N[2026-06-17 06:07:36]}} [2026-06-17 06:07:36.751] [WARN ] Unexpected async result [2026-06-17 06:07:36.751] [WARN ] Unexpected async result [2026-06-17 06:07:36.752] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=28.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:07:36.766] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:07:42.081] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:07:42.081] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:06:52Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:06:52Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:06:52Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:06:52Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:06:52Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:06:52Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:06:52Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:06:52Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:06:52Z","vendor":"MoreFun"} [2026-06-17 06:07:42.081] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:52Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:52Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:52Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:52Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:52Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:52Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:52Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:52Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:06:52Z", "vendor" => "MoreFun"} [2026-06-17 06:07:42.081] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:07:42.081] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:07:42.081] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:07:42.083] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=1316.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-06-17 06:07:42.085] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.1ms idle=0.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:07:42.087] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms idle=0.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-06-17 06:07:42.090] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.9ms idle=2.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-06-17 06:07:42.094] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms queue=0.9ms idle=5.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:07:42.131] [DEBUG] QUERY OK source="pos_merchant" db=34.7ms idle=5.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:07:42.133] [DEBUG] QUERY OK db=1.4ms queue=0.9ms idle=370.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 ["372916040000000"] [2026-06-17 06:07:42.133] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:07:42.134] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=40.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:07:42.137] [DEBUG] QUERY OK source="address" db=1.9ms idle=4.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:07:42.137] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:07:42.138] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:07:42.272] [DEBUG] QUERY OK db=132.4ms 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", "b0b2423e2c9b61d34d851b317bf7ca44b88ad6d19feb61d90e6dff978ce85426", 837, 937, ~U[2026-06-17 06:07:42Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:07:42.272] [INFO ] AutoPushService: Created push log 29693 for MF919 params.zip [2026-06-17 06:07:42.272] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 837, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:07:42.273] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:07:42.273] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:07:42.283] [DEBUG] QUERY OK source="config_file_versions" db=7.5ms idle=138.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-06-17 06:07:42.289] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:07:42.319] [DEBUG] QUERY OK db=22.3ms idle=24.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", "2e0c8d3eedbdc2ac7641fa9d4eb9db26604f301628e0af91d2257d59b1b958b5", 901, 17947, ~U[2026-06-17 06:07:42Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:07:42.320] [INFO ] AutoPushService: Created push log 29695 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:07:42.320] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 901, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:07:42.320] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:07:42.320] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:07:42.328] [DEBUG] QUERY OK source="config_file_versions" db=7.3ms idle=37.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-06-17 06:07:42.328] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:07:42.336] [DEBUG] QUERY OK source="tms_terminals" db=8.0ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:07:42.337] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:07:42.346] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:07:42.346] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:07:42.346] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:07:42.357] [DEBUG] QUERY OK source="config_file_versions" db=4.7ms queue=2.0ms idle=18.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-06-17 06:07:42.357] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:07:42.357] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:07:42.359] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=21.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:07:42.360] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:07:42.378] [DEBUG] QUERY OK source="tms_terminals" db=17.6ms queue=0.8ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:07:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:07:42.380] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=19.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-06-17 06:07:42.384] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=2.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-06-17 06:07:42.384] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:07:42.390] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=5.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:07:42.428] [DEBUG] QUERY OK source="tms_terminals" db=38.1ms queue=0.1ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:07:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:07:42.447] [DEBUG] QUERY OK db=14.1ms queue=0.1ms idle=44.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:06:52Z", ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:07:42.449] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39097, oid: "organization_id", upload_time: "2026-06-17T06:06:52Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]} [2026-06-17 06:07:42.451] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:52Z", "value" => "online"} [2026-06-17 06:07:42.497] [DEBUG] QUERY OK db=44.5ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:06:52Z", "online", "status", 39097, ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:42.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303903, itemkey: "status", value: "online", timestamp: "2026-06-17T06:06:52Z", message: "Terminal status update", status_log_id: 39097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]}} [2026-06-17 06:07:42.497] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:07:42.498] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:07:42.498] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:52Z", "value" => "54"} [2026-06-17 06:07:42.524] [DEBUG] QUERY OK db=23.4ms queue=1.9ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:06:52Z", "54", "battery", 39097, ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:42.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303905, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:06:52Z", message: "Battery level", status_log_id: 39097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]}} [2026-06-17 06:07:42.525] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:52Z", "value" => "online"} [2026-06-17 06:07:42.539] [DEBUG] QUERY OK db=10.9ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:06:52Z", "online", "network", 39097, ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:42.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303906, itemkey: "network", value: "online", timestamp: "2026-06-17T06:06:52Z", message: "Network connectivity", status_log_id: 39097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]}} [2026-06-17 06:07:42.540] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:07:42.542] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:07:42.540] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:52Z", "value" => "0"} [2026-06-17 06:07:42.594] [DEBUG] QUERY OK db=42.5ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:06:52Z", "0", "cpu", 39097, ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:42.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303909, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:06:52Z", message: "CPU usage percentage", status_log_id: 39097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]}} [2026-06-17 06:07:42.594] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:52Z", "value" => "1.0.0"} [2026-06-17 06:07:42.623] [DEBUG] QUERY OK db=28.6ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:06:52Z", "1.0.0", "parameter_config", 39097, ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:42.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303910, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:06:52Z", message: "Current parameters version", status_log_id: 39097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]}} [2026-06-17 06:07:42.628] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:52Z", "value" => "1.0.1"} [2026-06-17 06:07:42.659] [DEBUG] QUERY OK db=26.0ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:06:52Z", "1.0.1", "emv_config", 39097, ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:42.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303913, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:06:52Z", message: "Current EMV config version", status_log_id: 39097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]}} [2026-06-17 06:07:42.660] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:52Z", "value" => ""} [2026-06-17 06:07:42.701] [DEBUG] QUERY OK db=40.4ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:06:52Z", "keys_config", 39097, ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:42.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303914, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:06:52Z", message: "Current keys config version", status_log_id: 39097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]}} [2026-06-17 06:07:42.702] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:52Z", "value" => ""} [2026-06-17 06:07:42.720] [DEBUG] QUERY OK db=17.2ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:06:52Z", "application", 39097, ~N[2026-06-17 06:07:42], ~N[2026-06-17 06:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:42.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303916, itemkey: "application", value: nil, timestamp: "2026-06-17T06:06:52Z", message: "Current application version", status_log_id: 39097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:42], updated_at: ~N[2026-06-17 06:07:42]}} [2026-06-17 06:07:42.735] [WARN ] Unexpected async result [2026-06-17 06:07:42.735] [WARN ] Unexpected async result [2026-06-17 06:07:42.743] [DEBUG] QUERY OK source="tms_terminals" db=7.6ms idle=34.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:07:42.775] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:07:49.579] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:07:49.579] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:06:59Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:06:59Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:06:59Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:06:59Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:06:59Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:06:59Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:06:59Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:06:59Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:06:59Z","vendor":"MoreFun"} [2026-06-17 06:07:49.580] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:59Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:59Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:59Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:59Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:59Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:59Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:59Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:59Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:06:59Z", "vendor" => "MoreFun"} [2026-06-17 06:07:49.580] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 06:07:49.580] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:07:49.580] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:07:49.581] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1477.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-06-17 06:07:49.583] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=473.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:07:49.585] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms 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-06-17 06:07:49.587] [DEBUG] QUERY OK source="parameter_definitions" db=1.7ms queue=0.4ms idle=2.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-06-17 06:07:49.589] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:162 [2026-06-17 06:07:49.629] [DEBUG] QUERY OK source="pos_merchant" db=38.8ms queue=0.6ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:173 [2026-06-17 06:07:49.630] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=1860.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 ["372916040000000"] [2026-06-17 06:07:49.630] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:07:49.632] [DEBUG] QUERY OK source="pos_terminal_data" db=1.9ms queue=0.1ms idle=41.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:259 [2026-06-17 06:07:49.633] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.3ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:79 [2026-06-17 06:07:49.634] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:07:49.636] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:07:49.693] [DEBUG] QUERY OK db=53.6ms queue=1.0ms idle=5.7ms 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", "64b837780b36684836f85a6f243c4fc7fcaacd33f72792d5bd6367c073633d5e", 1412, 937, ~U[2026-06-17 06:07:49Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:07:49.693] [INFO ] AutoPushService: Created push log 29696 for MF919 params.zip [2026-06-17 06:07:49.693] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1412, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:07:49.693] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:07:49.694] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:07:49.695] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms idle=60.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-06-17 06:07:49.712] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:07:49.736] [DEBUG] QUERY OK db=19.6ms idle=23.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", "abd75e269f103a99153b9010e517711d16b2acd3dad179676a52f1f9e60459d2", 2307, 17947, ~U[2026-06-17 06:07:49Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:07:49.736] [INFO ] AutoPushService: Created push log 29698 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:07:49.736] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2307, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:07:49.736] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:07:49.736] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:07:49.740] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms queue=1.4ms idle=41.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-06-17 06:07:49.740] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:07:49.741] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=5.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:07:49.742] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:07:49.744] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:07:49.744] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:07:49.745] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:07:49.746] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms 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-06-17 06:07:49.746] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:07:49.746] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:07:49.747] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:07:49.748] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:07:49.748] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=2.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-06-17 06:07:49.749] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-06-17 06:07:49.749] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:07:49.752] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:627 [2026-06-17 06:07:49.780] [DEBUG] QUERY OK source="tms_terminals" db=27.9ms queue=0.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:07:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:07:49.796] [DEBUG] QUERY OK db=15.8ms idle=28.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:06:59Z", ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:07:49.796] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39100, oid: "organization_id", upload_time: "2026-06-17T06:06:59Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]} [2026-06-17 06:07:49.796] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:06:59Z", "value" => "online"} [2026-06-17 06:07:49.816] [DEBUG] QUERY OK db=19.5ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:06:59Z", "online", "status", 39100, ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:49.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303919, itemkey: "status", value: "online", timestamp: "2026-06-17T06:06:59Z", message: "Terminal status update", status_log_id: 39100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]}} [2026-06-17 06:07:49.817] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:07:49.819] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=21.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:07:49], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:07:49.820] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:06:59Z", "value" => "54"} [2026-06-17 06:07:49.820] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:07:49.859] [DEBUG] QUERY OK db=37.8ms queue=1.5ms idle=3.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:06:59Z", "54", "battery", 39100, ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:49.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303922, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:06:59Z", message: "Battery level", status_log_id: 39100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]}} [2026-06-17 06:07:49.860] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:06:59Z", "value" => "online"} [2026-06-17 06:07:49.887] [DEBUG] QUERY OK db=26.8ms queue=0.1ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:06:59Z", "online", "network", 39100, ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:49.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303924, itemkey: "network", value: "online", timestamp: "2026-06-17T06:06:59Z", message: "Network connectivity", status_log_id: 39100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]}} [2026-06-17 06:07:49.888] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:07:49.888] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=28.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:07:49], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:07:49.889] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:06:59Z", "value" => "0"} [2026-06-17 06:07:49.889] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:07:49.904] [DEBUG] QUERY OK db=15.4ms idle=1.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:06:59Z", "0", "cpu", 39100, ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:49.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303926, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:06:59Z", message: "CPU usage percentage", status_log_id: 39100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]}} [2026-06-17 06:07:49.905] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:06:59Z", "value" => "1.0.0"} [2026-06-17 06:07:49.933] [DEBUG] QUERY OK db=25.5ms queue=0.1ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:06:59Z", "1.0.0", "parameter_config", 39100, ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:49.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303928, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:06:59Z", message: "Current parameters version", status_log_id: 39100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]}} [2026-06-17 06:07:49.934] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:06:59Z", "value" => "1.0.1"} [2026-06-17 06:07:49.974] [DEBUG] QUERY OK db=39.9ms queue=0.2ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:06:59Z", "1.0.1", "emv_config", 39100, ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:49.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303930, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:06:59Z", message: "Current EMV config version", status_log_id: 39100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]}} [2026-06-17 06:07:49.975] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:06:59Z", "value" => ""} [2026-06-17 06:07:49.993] [DEBUG] QUERY OK db=17.3ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:06:59Z", "keys_config", 39100, ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:49.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303932, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:06:59Z", message: "Current keys config version", status_log_id: 39100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]}} [2026-06-17 06:07:49.993] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:06:59Z", "value" => ""} [2026-06-17 06:07:50.016] [DEBUG] QUERY OK db=22.9ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:06:59Z", "application", 39100, ~N[2026-06-17 06:07:49], ~N[2026-06-17 06:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:07:50.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303934, itemkey: "application", value: nil, timestamp: "2026-06-17T06:06:59Z", message: "Current application version", status_log_id: 39100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:07:49], updated_at: ~N[2026-06-17 06:07:49]}} [2026-06-17 06:07:50.052] [DEBUG] QUERY OK source="tms_terminals" db=34.8ms idle=24.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:07:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 06:07:50.052] [WARN ] Unexpected async result [2026-06-17 06:07:50.052] [WARN ] Unexpected async result [2026-06-17 06:07:50.053] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms idle=35.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:07:50.057] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:12:09.690] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 06:12:09.694] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=2.9ms idle=770.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-06-17 06:12:09.699] [DEBUG] QUERY OK source="filter_usage" db=4.7ms idle=532.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-06-17 06:12:09.699] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 06:12:09.948] [INFO ] Running offline device check... [2026-06-17 06:12:09.948] [INFO ] Starting offline device check... [2026-06-17 06:12:09.950] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.3ms idle=249.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:677 [2026-06-17 06:12:09.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=27.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:688 [2026-06-17 06:12:09.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.963] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.969] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.0ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.975] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=7.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:688 [2026-06-17 06:12:09.989] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:09.996] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.002] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.5ms 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:688 [2026-06-17 06:12:10.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.041] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.5ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=1.8ms idle=15.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:688 [2026-06-17 06:12:10.054] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.1ms idle=11.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:688 [2026-06-17 06:12:10.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=10.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:688 [2026-06-17 06:12:10.057] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.058] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.073] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.077] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms queue=0.1ms idle=15.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.081] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=1.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.102] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms queue=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:688 [2026-06-17 06:12:10.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.1ms idle=10.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:688 [2026-06-17 06:12:10.123] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms 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:688 [2026-06-17 06:12:10.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=1.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.133] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:688 [2026-06-17 06:12:10.133] [INFO ] Offline device check completed. Found 37 offline devices, updated 0 statuses. [2026-06-17 06:12:10.134] [INFO ] Offline device check completed successfully [2026-06-17 06:32:36.604] [INFO ] [Ysp.Scheduler] Started. SFTP in 20h 27m, MIS in 0h 27m [2026-06-17 06:32:36.645] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 06:32:36.673] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 06:32:38.875] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 06:32:38.879] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 06:32:38.881] [INFO ] Building initial filter cache... [2026-06-17 06:32:38.889] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=2.1ms idle=1126.5ms 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-06-17 06:32:38.906] [DEBUG] QUERY OK source="filter_usage" db=2.4ms queue=2.9ms idle=855.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-06-17 06:32:38.906] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 06:32:39.058] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 06:32:39.144] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 06:32:39.163] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 06:32:41.230] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 45µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "A2cwAVsZIUkAcT0kOwZgNTgvbxRAH34i30Zq9mM07HQUqO8PwHXwyS9J", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "3", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 06:32:42.206] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 06:32:42.235] [DEBUG] QUERY OK source="users_tokens" db=1.4ms queue=2.5ms idle=1480.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 06:32:42.206624Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 06:32:42.253] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=1.0ms idle=1112.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 06:32:42.256] [DEBUG] QUERY OK source="app_packages" db=0.3ms queue=0.6ms idle=114.4ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 06:32:42.307] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=2.2ms idle=50.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 06:32:42.312] [DEBUG] QUERY OK source="terminal_groups" db=1.9ms queue=2.2ms idle=51.1ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 06:32:42.312] [DEBUG] Replied in 105ms [2026-06-17 06:32:42.325] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:32:42.327] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=18.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:32:42.328] [DEBUG] Replied in 3ms [2026-06-17 06:34:51.291] [INFO ] GET /terminals [2026-06-17 06:34:51.323] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 06:34:51.325] [DEBUG] QUERY OK source="users_tokens" db=1.0ms idle=1562.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 06:34:51.323978Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 06:34:51.339] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=650.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 06:34:51.343] [DEBUG] QUERY OK source="app_packages" db=2.4ms idle=551.4ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 06:34:51.345] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=4.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 06:34:51.347] [DEBUG] QUERY OK source="terminal_groups" db=1.3ms idle=1.9ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 06:34:51.348] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:34:51.362] [INFO ] Sent 200 in 71ms [2026-06-17 06:34:56.156] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fiIlNlEZIg4DWDQyHAQJMX4zWCZfBCIsNuOF3mNw4aXCVMQT1ToEfHeD", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 06:34:56.262] [INFO ] GET /images/favicon.png [2026-06-17 06:34:56.314] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/Shamanth/prverification/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/Shamanth/prverification/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-06-17 06:34:56.503] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 06:34:56.505] [DEBUG] QUERY OK source="users_tokens" db=1.3ms queue=0.1ms idle=1742.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 06:34:56.503934Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 06:34:56.507] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1716.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 06:34:56.508] [DEBUG] QUERY OK source="app_packages" db=0.3ms idle=807.0ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 06:34:56.509] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.3ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 06:34:56.510] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 06:34:56.510] [DEBUG] Replied in 6ms [2026-06-17 06:34:56.510] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:34:56.511] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:34:56.511] [DEBUG] Replied in 1ms [2026-06-17 06:35:00.407] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:35:00.407] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:34:10Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:34:10Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:34:10Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:34:10Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:34:10Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:34:10Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:34:10Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:34:10Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:34:10Z","vendor":"MoreFun"} [2026-06-17 06:35:00.408] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:34:10Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:34:10Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:34:10Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:34:10Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:34:10Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:34:10Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:34:10Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:34:10Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:34:10Z", "vendor" => "MoreFun"} [2026-06-17 06:35:00.408] [INFO ] Extracted versions for 98251226730002: %{application: "", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 06:35:00.408] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:35:00.408] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:35:00.410] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.0ms idle=617.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 06:35:00.412] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.5ms idle=353.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:35:00.414] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms queue=0.3ms 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-06-17 06:35:00.420] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.6ms idle=6.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-06-17 06:35:00.421] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms queue=0.2ms idle=7.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:132 [2026-06-17 06:35:00.462] [DEBUG] QUERY OK source="pos_merchant" db=0.4ms queue=39.8ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:143 [2026-06-17 06:35:00.469] [DEBUG] QUERY OK db=0.7ms queue=1.0ms idle=657.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 ["372916040000000"] [2026-06-17 06:35:00.469] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:35:00.470] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms queue=0.3ms idle=48.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:229 [2026-06-17 06:35:00.471] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:35:00.478] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:35:00.501] [DEBUG] QUERY OK db=11.5ms queue=0.7ms idle=23.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`template_id`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`parameters_sent`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c5d86d39c80d72164307d1f12bf6b2948ae4cdefe23bf2b21b033cb93511253c", 53476, 861, "priv/ota/98251226730002/params.zip", 13, "parameter", 10, "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:35:00Z], %{"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", ...}, "1.0.0", ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:35:00.501] [INFO ] AutoPushService: Created push log 29699 for MF919 params.zip [2026-06-17 06:35:00.505] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 53476, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:35:00.505] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:35:00.508] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:35:00.510] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.9ms idle=38.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-06-17 06:35:00.515] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:35:00.540] [DEBUG] QUERY OK db=22.7ms queue=1.0ms idle=18.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "cabf137f9ab5eb50d201f0a227f543c37716cef1f4ff81639b593334e5c41532", 53572, 17947, "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:35:00Z], "1.0.1", ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:35:00.540] [INFO ] AutoPushService: Created push log 29700 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:35:00.540] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 53572, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:35:00.540] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:35:00.541] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:35:00.542] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.3ms idle=30.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-06-17 06:35:00.543] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:35:00.544] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:35:00.544] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:35:00.595] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:35:00.595] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:35:00.595] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:35:00.596] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=53.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-06-17 06:35:00.596] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:35:00.596] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:35:00.597] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=52.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:35:00.605] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:35:00.629] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms queue=0.4ms idle=9.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:35:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:35:00.635] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.6ms idle=37.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-06-17 06:35:00.636] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=6.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-06-17 06:35:00.636] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:35:00.637] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 06:35:00.649] [DEBUG] QUERY OK source="tms_terminals" db=11.4ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:35:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:35:00.704] [DEBUG] QUERY OK db=53.4ms queue=1.3ms idle=12.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:34:10Z", ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:35:00.711] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39102, oid: "organization_id", upload_time: "2026-06-17T06:34:10Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]} [2026-06-17 06:35:00.711] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:34:10Z", "value" => "online"} [2026-06-17 06:35:00.729] [DEBUG] QUERY OK db=16.7ms queue=0.7ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:34:10Z", "online", "status", 39102, ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:35:00.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303951, itemkey: "status", value: "online", timestamp: "2026-06-17T06:34:10Z", message: "Terminal status update", status_log_id: 39102, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]}} [2026-06-17 06:35:00.729] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:35:00.731] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.9ms idle=15.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:35:00], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:35:00.732] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:34:10Z", "value" => "54"} [2026-06-17 06:35:00.732] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:35:00.732] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:35:00.753] [DEBUG] QUERY OK db=20.5ms idle=3.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:34:10Z", "54", "battery", 39102, ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:35:00.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303952, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:34:10Z", message: "Battery level", status_log_id: 39102, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]}} [2026-06-17 06:35:00.753] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:34:10Z", "value" => "online"} [2026-06-17 06:35:00.777] [DEBUG] QUERY OK db=22.6ms queue=0.8ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:34:10Z", "online", "network", 39102, ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:35:00.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303953, itemkey: "network", value: "online", timestamp: "2026-06-17T06:34:10Z", message: "Network connectivity", status_log_id: 39102, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]}} [2026-06-17 06:35:00.778] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:35:00.779] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=25.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:35:00], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 06:35:00.779] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:34:10Z", "value" => "0"} [2026-06-17 06:35:00.779] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:35:00.779] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 06:35:00.804] [DEBUG] QUERY OK db=24.3ms queue=0.9ms idle=1.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:34:10Z", "0", "cpu", 39102, ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:35:00.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303954, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:34:10Z", message: "CPU usage percentage", status_log_id: 39102, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]}} [2026-06-17 06:35:00.805] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:34:10Z", "value" => "1.0.0"} [2026-06-17 06:35:00.823] [DEBUG] QUERY OK db=16.3ms queue=0.1ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:34:10Z", "1.0.0", "parameter_config", 39102, ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:35:00.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303955, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:34:10Z", message: "Current parameters version", status_log_id: 39102, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]}} [2026-06-17 06:35:00.823] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:34:10Z", "value" => "1.0.1"} [2026-06-17 06:35:00.848] [DEBUG] QUERY OK db=23.6ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:34:10Z", "1.0.1", "emv_config", 39102, ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:35:00.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303956, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:34:10Z", message: "Current EMV config version", status_log_id: 39102, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]}} [2026-06-17 06:35:00.848] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:34:10Z", "value" => ""} [2026-06-17 06:35:00.881] [DEBUG] QUERY OK db=32.1ms queue=0.4ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:34:10Z", "keys_config", 39102, ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:35:00.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303957, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:34:10Z", message: "Current keys config version", status_log_id: 39102, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]}} [2026-06-17 06:35:00.881] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:34:10Z", "value" => ""} [2026-06-17 06:35:00.900] [DEBUG] QUERY OK db=18.0ms queue=0.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:34:10Z", "application", 39102, ~N[2026-06-17 06:35:00], ~N[2026-06-17 06:35:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:35:00.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303958, itemkey: "application", value: nil, timestamp: "2026-06-17T06:34:10Z", message: "Current application version", status_log_id: 39102, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:35:00], updated_at: ~N[2026-06-17 06:35:00]}} [2026-06-17 06:35:00.902] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=19.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:35:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 06:35:00.903] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=2.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:35:00.903] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:35:00.907] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:35:00.909] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 06:35:00.911] [WARN ] Unexpected async result [2026-06-17 06:35:00.911] [WARN ] Unexpected async result [2026-06-17 06:35:04.082] [DEBUG] HANDLE EVENT "set_status_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"status" => "online", "value" => ""} [2026-06-17 06:35:04.087] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms queue=1.1ms idle=1289.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:492 [2026-06-17 06:35:04.088] [DEBUG] Replied in 5ms [2026-06-17 06:35:06.594] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "98251226730002"} [2026-06-17 06:35:06.609] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.5ms queue=0.9ms idle=801.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 06:35:06.854] [DEBUG] QUERY OK source="tms_terminal_status_items" db=234.6ms queue=3.9ms idle=326.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, 39047, 39046, 39045, 39044, ...] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 06:35:07.001] [DEBUG] Replied in 407ms [2026-06-17 06:35:09.311] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:09.311] [DEBUG] Replied in 405µs [2026-06-17 06:35:09.312] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:09.313] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=562.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:35:09.313] [DEBUG] Replied in 1ms [2026-06-17 06:35:09.744] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:09.744] [DEBUG] Replied in 185µs [2026-06-17 06:35:09.745] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:09.746] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=952.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:35:09.746] [DEBUG] Replied in 1ms [2026-06-17 06:35:20.151] [DEBUG] MOUNT PlatformWeb.TerminalLocationsLive Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 06:35:20.152] [DEBUG] QUERY OK source="users_tokens" db=0.5ms idle=1389.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 06:35:20.151434Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 06:35:20.207] [DEBUG] QUERY OK source="tms_terminals" db=54.1ms queue=0.9ms idle=1360.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.TerminalLocationsLive.load_location_data/1, at: lib/platform_web/live/terminal_locations_live.ex:154 [2026-06-17 06:35:20.209] [DEBUG] Replied in 58ms [2026-06-17 06:35:20.209] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLocationsLive Parameters: %{} [2026-06-17 06:35:20.258] [DEBUG] QUERY OK source="tms_terminals" db=47.0ms idle=428.4ms 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.TerminalLocationsLive.load_location_data/1, at: lib/platform_web/live/terminal_locations_live.ex:154 [2026-06-17 06:35:20.258] [DEBUG] Replied in 49ms [2026-06-17 06:35:24.815] [DEBUG] HANDLE EVENT "update_filter" in PlatformWeb.TerminalLocationsLive Parameters: %{"_target" => ["filter", "status"], "filter" => %{"_unused_country" => "", "_unused_date_from" => "", "_unused_date_to" => "", "_unused_device_model" => "", "_unused_last_activity_days" => "", "_unused_region" => "", "_unused_vendor" => "", "country" => "", "date_from" => "2026-05-18", "date_to" => "2026-06-17", "device_model" => "", "last_activity_days" => "7", "region" => "", "status" => "online", "vendor" => ""}} [2026-06-17 06:35:24.816] [DEBUG] Replied in 318µs [2026-06-17 06:35:24.826] [ERROR] GenServer #PID<0.4412.0> terminating ** (ArgumentError) cannot push_patch/2 to %URI{scheme: "http", userinfo: nil, host: "demo.ctrmv.com", port: 4019, path: "/terminals/locations", query: "status%3Donline%26date_from%3D2026-05-18%26date_to%3D2026-06-17%26last_activity_days%3D7", fragment: nil} because the given path does not point to the current root view PlatformWeb.TerminalLocationsLive (phoenix_live_view 1.1.22) lib/phoenix_live_view/channel.ex:946: Phoenix.LiveView.Channel.patch_params_and_action!/2 (phoenix_live_view 1.1.22) lib/phoenix_live_view/channel.ex:913: Phoenix.LiveView.Channel.handle_redirect/4 (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: %Phoenix.Socket.Message{topic: "lv:phx-GLnKyMpRH4uV5X3h", event: "event", payload: %{"event" => "update_filter", "meta" => %{"_target" => "filter[status]"}, "type" => "form", "uploads" => %{}, "value" => "filter%5B_unused_country%5D=&filter%5Bcountry%5D=&filter%5B_unused_region%5D=&filter%5Bregion%5D=&filter%5Bstatus%5D=online&filter%5B_unused_vendor%5D=&filter%5Bvendor%5D=&filter%5B_unused_device_model%5D=&filter%5Bdevice_model%5D=&filter%5B_unused_date_from%5D=&filter%5Bdate_from%5D=2026-05-18&filter%5B_unused_date_to%5D=&filter%5Bdate_to%5D=2026-06-17&filter%5B_unused_last_activity_days%5D=&filter%5Blast_activity_days%5D=7"}, ref: "16", join_ref: "15"} State: %{socket: #Phoenix.LiveView.Socket, router: PlatformWeb.Router, assigns: %{loading: false, filters: %{status: "", vendor: "", device_model: "", region: "", device_type: "", city: "", country: "AE", date_from: ~D[2026-05-18], date_to: ~D[2026-06-17], last_activity_days: 30}, __changed__: %{}, flash: %{}, 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-03-13 10:38:22Z], ...>, current_page: "terminal_locations", page_title: "Terminal Locations", live_action: :index, map_view: "street", show_clusters: true, show_heatmap: false, filtered_devices: [], all_devices: [%{cpu: nil, id: 1, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "61250415798001", vendor: "MoreFun", model: "SR600", inserted_at: ~N[2025-08-09 09:20:23], last_seen_at: ~N[2026-05-22 16:16:45], oid: "org-id-placeholder", area: nil, imei: nil, updated_at: ~N[2026-05-25 07:05:16], battery: nil}, %{cpu: "50", id: 2, memory: "50", status: "offline", group: nil, remark: nil, serial_number: "61250424798001", vendor: nil, model: nil, inserted_at: ~N[2025-08-09 09:22:09], last_seen_at: ~N[2026-06-11 06:01:33], oid: "org-id-placeholder", area: nil, imei: nil, updated_at: ~N[2026-06-11 06:13:06], battery: "74"}, %{cpu: nil, id: 3, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "61250829798002", vendor: nil, model: nil, inserted_at: ~N[2025-09-23 11:44:25], last_seen_at: ~N[2026-05-25 11:42:10], oid: "org-id-placeholder", area: nil, imei: nil, updated_at: ~N[2026-05-25 12:37:51], battery: nil}, %{cpu: "50", id: 4, memory: "50", status: "offline", group: nil, remark: nil, serial_number: "61250315780001", vendor: nil, model: nil, inserted_at: ~N[2025-09-23 13:34:59], last_seen_at: ~N[2026-02-27 14:33:45], oid: "org-id-placeholder", area: nil, imei: nil, updated_at: ~N[2026-02-27 14:48:33], battery: "76"}, %{cpu: nil, id: 5, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "61250904380014", vendor: nil, model: nil, inserted_at: ~N[2025-10-31 11:02:39], last_seen_at: ~N[2025-11-10 09:42:22], oid: "org-id-placeholder", area: nil, imei: nil, updated_at: ~N[2025-11-10 09:54:46], battery: nil}, %{cpu: "45", id: 6, memory: "60", status: "offline", group: nil, remark: nil, serial_number: "61250904380001", vendor: "Morefun", model: "SR600", inserted_at: ~N[2026-01-31 16:36:45], last_seen_at: ~N[2026-01-31 16:36:45], oid: "organization_id", area: nil, imei: nil, updated_at: ~N[2026-01-31 17:30:21], battery: "85"}, %{cpu: "45", id: 7, memory: "60", status: "offline", group: nil, remark: nil, serial_number: "61250904380091", vendor: "MoreFun", model: "MF919", inserted_at: ~N[2026-01-31 16:57:17], last_seen_at: ~N[2026-03-19 18:09:25], oid: "organization_id", area: nil, imei: nil, updated_at: ~N[2026-03-19 18:20:44], battery: "85"}, %{cpu: "45", id: 8, memory: "60", status: "offline", group: nil, remark: nil, serial_number: "1234567890", vendor: "Morefun", model: "MF919", inserted_at: ~N[2026-02-02 09:28:54], last_seen_at: ~N[2026-02-02 11:02:41], oid: "organization_id", area: nil, imei: nil, updated_at: ~N[2026-02-02 11:15:15], battery: "85"}, %{cpu: nil, id: 9, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "MF919 S10", vendor: "morefun", model: nil, inserted_at: ~N[2026-02-05 04:55:40], last_seen_at: ~N[2026-02-05 05:22:22], oid: "oid", area: nil, imei: nil, updated_at: ~N[2026-02-05 05:35:25], battery: nil}, %{cpu: "0", id: 10, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "98250623730002", vendor: "MoreFun", model: "MF919", inserted_at: ~N[2026-02-05 05:23:40], last_seen_at: ~N[2026-04-17 09:04:41], oid: "organization_id", area: nil, imei: nil, updated_at: ~N[2026-04-17 09:17:46], battery: "100"}, %{cpu: nil, id: 11, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "61251020798002", vendor: nil, model: nil, inserted_at: ~N[2026-02-08 16:25:14], last_seen_at: ~N[2026-06-11 07:39:17], oid: "org-id-placeholder", area: nil, imei: nil, updated_at: ~N[2026-06-11 07:50:04], battery: nil}, %{cpu: nil, id: 12, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "382409238899111", vendor: nil, model: nil, inserted_at: ~N[2026-02-09 02:07:17], last_seen_at: ~N[2026-02-09 02:07:17], oid: "org-id-placeholder", area: nil, imei: nil, updated_at: ~N[2026-02-09 02:20:38], battery: nil}, %{cpu: "0", id: 13, memory: nil, status: "online", group: nil, remark: nil, serial_number: "98251226730002", vendor: "MoreFun", model: "MF919", inserted_at: ~N[2026-02-27 05:29:03], last_seen_at: ~N[2026-06-17 06:35:00], oid: nil, area: nil, imei: nil, updated_at: ~N[2026-06-17 06:35:00], battery: "54"}, %{cpu: "50", id: 14, memory: "50", status: "offline", group: nil, remark: nil, serial_number: "61251020798001", vendor: nil, model: nil, inserted_at: ~N[2026-03-04 09:05:15], last_seen_at: ~N[2026-05-25 06:27:02], oid: "org-id-placeholder", area: nil, imei: nil, updated_at: ~N[2026-05-25 08:05:17], ...}, %{cpu: "0", id: 15, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "UNKNOWN_SN", vendor: "MoreFun", model: nil, inserted_at: ~N[2026-03-12 07:02:33], last_seen_at: ~N[2026-06-16 10:58:48], oid: "organization_id", area: nil, imei: nil, ...}, %{cpu: "0", id: 16, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "549a7802eef073f3", vendor: "MoreFun", model: nil, inserted_at: ~N[2026-03-12 11:05:49], last_seen_at: ~N[2026-03-12 11:26:15], oid: "organization_id", area: nil, ...}, %{cpu: "0", id: 18, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "123456789012345", vendor: "MoreFun", model: "MF919", inserted_at: ~N[2026-03-13 10:33:00], last_seen_at: ~N[2026-04-14 06:45:59], oid: "organization_id", ...}, %{cpu: "0", id: 19, memory: nil, status: "offline", group: nil, remark: nil, serial_number: "98250623730001", vendor: "MoreFun", model: "MF919", inserted_at: ~N[2026-03-25 11:14:09], last_seen_at: ~N[2026-06-17 05:19:12], ...}, %{cpu: nil, id: 20, memory: nil, status: "offline", group: nil, remark: nil, serial_num (truncated) [2026-06-17 06:35:26.151] [DEBUG] MOUNT PlatformWeb.TerminalLocationsLive Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 06:35:26.152] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=0.1ms idle=388.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 06:35:26.151971Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 06:35:26.198] [DEBUG] QUERY OK source="tms_terminals" db=44.8ms queue=0.1ms idle=360.5ms 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.TerminalLocationsLive.load_location_data/1, at: lib/platform_web/live/terminal_locations_live.ex:154 [2026-06-17 06:35:26.199] [DEBUG] Replied in 47ms [2026-06-17 06:35:26.199] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLocationsLive Parameters: %{} [2026-06-17 06:35:26.243] [DEBUG] QUERY OK source="tms_terminals" db=43.5ms idle=404.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.TerminalLocationsLive.load_location_data/1, at: lib/platform_web/live/terminal_locations_live.ex:154 [2026-06-17 06:35:26.244] [DEBUG] Replied in 44ms [2026-06-17 06:35:31.534] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 06:35:31.535] [DEBUG] QUERY OK source="users_tokens" db=0.5ms idle=1771.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 06:35:31.535020Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 06:35:31.536] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=743.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 06:35:31.537] [DEBUG] QUERY OK source="app_packages" db=0.3ms idle=729.7ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 06:35:31.539] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 06:35:31.539] [DEBUG] QUERY OK source="terminal_groups" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 06:35:31.539] [DEBUG] Replied in 5ms [2026-06-17 06:35:31.540] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:31.541] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:35:31.541] [DEBUG] Replied in 1ms [2026-06-17 06:35:34.041] [DEBUG] HANDLE EVENT "set_status_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"status" => "online", "value" => ""} [2026-06-17 06:35:34.043] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.5ms idle=1223.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:492 [2026-06-17 06:35:34.044] [DEBUG] Replied in 2ms [2026-06-17 06:35:36.340] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "98251226730002"} [2026-06-17 06:35:36.353] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.1ms queue=0.8ms idle=513.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 06:35:36.617] [DEBUG] QUERY OK source="tms_terminal_status_items" db=241.9ms queue=8.8ms idle=32.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, 39047, 39046, 39045, 39044, ...] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 06:35:36.792] [DEBUG] Replied in 452ms [2026-06-17 06:35:54.847] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:54.848] [DEBUG] Replied in 271µs [2026-06-17 06:35:54.848] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:54.849] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1051.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:35:54.849] [DEBUG] Replied in 1ms [2026-06-17 06:35:55.318] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:55.318] [DEBUG] Replied in 218µs [2026-06-17 06:35:55.318] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:35:55.320] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=469.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:35:55.320] [DEBUG] Replied in 2ms [2026-06-17 06:37:38.853] [INFO ] Running offline device check... [2026-06-17 06:37:38.853] [INFO ] Starting offline device check... [2026-06-17 06:37:38.857] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=1050.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:678 [2026-06-17 06:37:38.869] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.8ms queue=1.6ms idle=690.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.876] [INFO ] Starting scheduled rule validation [2026-06-17 06:37:38.876] [DEBUG] Validating missing assignments [2026-06-17 06:37:38.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms idle=13.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms 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 [3] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.889] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms 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 [4] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.892] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [5] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [6] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.894] [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 [7] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.896] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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 [8] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.898] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms queue=0.7ms idle=1.8ms 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-06-17 06:37:38.898] [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 [9] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [10] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.902] [DEBUG] QUERY OK source="tms_terminals" db=4.0ms idle=0.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.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-06-17 06:37:38.904] [DEBUG] Re-applied 0 rules during validation [2026-06-17 06:37:38.904] [DEBUG] Validating invalid assignments [2026-06-17 06:37:38.904] [DEBUG] Validating rule consistency [2026-06-17 06:37:38.905] [DEBUG] Updating group terminal counts [2026-06-17 06:37:38.907] [DEBUG] QUERY OK source="terminal_groups" db=0.7ms queue=1.1ms idle=3.4ms 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-06-17 06:37:38.908] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms queue=0.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 [11] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.909] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.9ms idle=0.2ms 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-06-17 06:37:38.909] [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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.911] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=1.1ms idle=0.1ms 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-06-17 06:37:38.917] [DEBUG] QUERY OK source="terminal_group_rules" db=4.9ms queue=0.5ms 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-06-17 06:37:38.917] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [13] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.927] [DEBUG] QUERY OK source="terminal_group_rules" db=4.8ms queue=5.3ms idle=0.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-06-17 06:37:38.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [14] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.930] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=2.3ms idle=0.4ms 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-06-17 06:37:38.931] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [16] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.938] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [18] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.938] [DEBUG] QUERY OK source="terminal_group_memberships" db=3.9ms queue=3.4ms idle=0.2ms 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-06-17 06:37:38.945] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.1ms queue=4.7ms idle=0.2ms 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-06-17 06:37:38.945] [DEBUG] Current group statistics: %{groups: %{active: 0, total: 0, by_type: %{}}, rules: %{active: 0, total: 0}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 06:37:38.945] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 06:37:38.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [19] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.968] [DEBUG] QUERY OK source="tms_terminals" db=16.5ms queue=1.1ms idle=6.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:37:38], 19] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:725 [2026-06-17 06:37:38.968] [INFO ] Terminal 98250623730001 back online [2026-06-17 06:37:38.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=18.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=6.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.978] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [23] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.980] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [26] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:38.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=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 [29] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [33] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.024] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=18.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:37:39], 33] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:725 [2026-06-17 06:37:39.024] [INFO ] Terminal 98251226730001 back online [2026-06-17 06:37:39.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=24.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.026] [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 [36] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.037] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.040] [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 [42] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [43] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.043] [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 [44] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 [46] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.050] [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 [47] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.051] [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 [48] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.052] [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 [49] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.053] [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 [51] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.054] [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 [53] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.055] [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 [55] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:37:39.055] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 06:37:39.056] [INFO ] Offline device check completed successfully [2026-06-17 06:37:41.972] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 06:37:41.973] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T06:36:52Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T06:36:52Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T06:36:52Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T06:36:52Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T06:36:52Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T06:36:52Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T06:36:52Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T06:36:52Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T06:36:52Z","vendor":"MoreFun"} [2026-06-17 06:37:41.973] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:36:52Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:36:52Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:36:52Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:36:52Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:36:52Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:36:52Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:36:52Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:36:52Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T06:36:52Z", "vendor" => "MoreFun"} [2026-06-17 06:37:41.973] [INFO ] Extracted versions for 98251226730002: %{application: "", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 06:37:41.973] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 06:37:41.973] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 06:37:41.978] [DEBUG] QUERY OK source="parameter_templates" db=4.8ms idle=1169.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 06:37:41.979] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=801.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:37:41.983] [DEBUG] QUERY OK source="parameter_template_values" db=1.5ms idle=1.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-06-17 06:37:41.992] [DEBUG] QUERY OK source="parameter_definitions" db=1.6ms queue=5.5ms idle=5.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-06-17 06:37:41.993] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms idle=11.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:132 [2026-06-17 06:37:42.032] [DEBUG] QUERY OK source="pos_merchant" db=36.0ms queue=2.7ms idle=1.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:143 [2026-06-17 06:37:42.037] [DEBUG] QUERY OK db=2.2ms queue=1.6ms idle=222.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 ["372916040000000"] [2026-06-17 06:37:42.037] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, softpos_uuid= [2026-06-17 06:37:42.038] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms idle=43.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:229 [2026-06-17 06:37:42.038] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 06:37:42.040] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 06:37:42.065] [DEBUG] QUERY OK db=22.2ms idle=10.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`template_id`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`parameters_sent`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "766c882a3539d19909db121a4e10257413cc73d439a14d54ded69213d8d9cb34", 54148, 861, "priv/ota/98251226730002/params.zip", 13, "parameter", 10, "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:37:42Z], %{"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", ...}, "1.0.0", ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:37:42.065] [INFO ] AutoPushService: Created push log 29701 for MF919 params.zip [2026-06-17 06:37:42.065] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 54148, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:37:42.067] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:37:42.067] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 06:37:42.071] [DEBUG] QUERY OK source="config_file_versions" db=2.5ms idle=30.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-06-17 06:37:42.076] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:37:42.090] [DEBUG] QUERY OK db=12.9ms idle=11.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4cb4df8b8ab6b5aaa46cf598e0193bcc6294ec4475869f89af156a2780245645", 34661, 17947, "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:37:42Z], "1.0.1", ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:37:42.090] [INFO ] AutoPushService: Created push log 29702 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:37:42.091] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 34661, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:37:42.091] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 06:37:42.091] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 06:37:42.093] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=21.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-06-17 06:37:42.094] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 06:37:42.095] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:37:42.095] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:37:42.099] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:37:42.099] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:37:42.099] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:37:42.101] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 06:37:42.102] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:37:42.102] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 06:37:42.103] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=7.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:37:42.103] [INFO ] Terminal updated: 98251226730002 [2026-06-17 06:37:42.123] [DEBUG] QUERY OK source="tms_terminals" db=17.8ms queue=1.3ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:37:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:37:42.124] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=20.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-06-17 06:37:42.125] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 06:37:42.125] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 06:37:42.126] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 06:37:42.156] [DEBUG] QUERY OK source="tms_terminals" db=29.6ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:37:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:37:42.176] [DEBUG] QUERY OK db=19.8ms idle=30.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T06:36:52Z", ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:37:42.176] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39103, oid: "organization_id", upload_time: "2026-06-17T06:36:52Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]} [2026-06-17 06:37:42.176] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T06:36:52Z", "value" => "online"} [2026-06-17 06:37:42.192] [DEBUG] QUERY OK db=14.2ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T06:36:52Z", "online", "status", 39103, ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:37:42.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303959, itemkey: "status", value: "online", timestamp: "2026-06-17T06:36:52Z", message: "Terminal status update", status_log_id: 39103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]}} [2026-06-17 06:37:42.193] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 06:37:42.193] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T06:36:52Z", "value" => "54"} [2026-06-17 06:37:42.194] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 1 terminals [2026-06-17 06:37:42.211] [DEBUG] QUERY OK db=17.1ms queue=0.3ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T06:36:52Z", "54", "battery", 39103, ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:37:42.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303960, itemkey: "battery", value: "54", timestamp: "2026-06-17T06:36:52Z", message: "Battery level", status_log_id: 39103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]}} [2026-06-17 06:37:42.212] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T06:36:52Z", "value" => "online"} [2026-06-17 06:37:42.239] [DEBUG] QUERY OK db=26.0ms queue=0.6ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T06:36:52Z", "online", "network", 39103, ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:37:42.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303961, itemkey: "network", value: "online", timestamp: "2026-06-17T06:36:52Z", message: "Network connectivity", status_log_id: 39103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]}} [2026-06-17 06:37:42.239] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 06:37:42.240] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T06:36:52Z", "value" => "0"} [2026-06-17 06:37:42.240] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 1 terminals [2026-06-17 06:37:42.271] [DEBUG] QUERY OK db=31.1ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T06:36:52Z", "0", "cpu", 39103, ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:37:42.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303962, itemkey: "cpu", value: "0", timestamp: "2026-06-17T06:36:52Z", message: "CPU usage percentage", status_log_id: 39103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]}} [2026-06-17 06:37:42.271] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T06:36:52Z", "value" => "1.0.0"} [2026-06-17 06:37:42.282] [DEBUG] QUERY OK db=10.6ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T06:36:52Z", "1.0.0", "parameter_config", 39103, ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:37:42.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303963, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T06:36:52Z", message: "Current parameters version", status_log_id: 39103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]}} [2026-06-17 06:37:42.283] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T06:36:52Z", "value" => "1.0.1"} [2026-06-17 06:37:42.295] [DEBUG] QUERY OK db=11.8ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T06:36:52Z", "1.0.1", "emv_config", 39103, ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:37:42.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303964, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T06:36:52Z", message: "Current EMV config version", status_log_id: 39103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]}} [2026-06-17 06:37:42.296] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T06:36:52Z", "value" => ""} [2026-06-17 06:37:42.320] [DEBUG] QUERY OK db=24.0ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T06:36:52Z", "keys_config", 39103, ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:37:42.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303965, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T06:36:52Z", message: "Current keys config version", status_log_id: 39103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]}} [2026-06-17 06:37:42.320] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T06:36:52Z", "value" => ""} [2026-06-17 06:37:42.357] [DEBUG] QUERY OK db=33.9ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T06:36:52Z", "application", 39103, ~N[2026-06-17 06:37:42], ~N[2026-06-17 06:37:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:37:42.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303966, itemkey: "application", value: nil, timestamp: "2026-06-17T06:36:52Z", message: "Current application version", status_log_id: 39103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:37:42], updated_at: ~N[2026-06-17 06:37:42]}} [2026-06-17 06:37:42.359] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=37.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:37:42.359] [WARN ] Unexpected async result [2026-06-17 06:37:42.359] [WARN ] Unexpected async result [2026-06-17 06:37:42.360] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 06:37:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 06:37:38]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 06:37:39]}] [2026-06-17 06:41:04.259] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 06:41:04.259] [INFO ] Incoming JSON payload: {"oid":"b03481c1-2e68-4351-a59e-f436e1512bfb","sn":"98251226730001","uploadTime":"2026-06-17T14:44:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"ram_free_mb","value":"916","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T14:44:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:44:17Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 06:41:04.260] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b03481c1-2e68-4351-a59e-f436e1512bfb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:44:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:44:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:44:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:44:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:44:17Z", "value" => "916"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:44:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:44:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:44:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:44:17Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:44:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:44:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T14:44:17Z", "vendor" => "morefun"} [2026-06-17 06:41:04.260] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 06:41:04.260] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 06:41:04.260] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 06:41:04.269] [DEBUG] QUERY OK source="parameter_templates" db=8.3ms idle=474.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-06-17 06:41:04.274] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms queue=1.9ms idle=458.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-06-17 06:41:04.276] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 06:41:04.277] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:41:04.279] [INFO ] Terminal updated: 98251226730001 [2026-06-17 06:41:04.321] [DEBUG] QUERY OK source="tms_terminals" db=39.0ms queue=2.4ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:41:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:41:04.321] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 06:41:04.325] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms idle=44.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:629 [2026-06-17 06:41:04.352] [DEBUG] QUERY OK source="tms_terminals" db=26.2ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:41:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:41:04.366] [DEBUG] QUERY OK db=11.6ms idle=29.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b03481c1-2e68-4351-a59e-f436e1512bfb", "2026-06-17T14:44:17Z", ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:41:04.366] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39104, oid: "b03481c1-2e68-4351-a59e-f436e1512bfb", upload_time: "2026-06-17T14:44:17Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]} [2026-06-17 06:41:04.366] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:44:17Z", "value" => "morefun"} [2026-06-17 06:41:04.440] [DEBUG] QUERY OK db=30.7ms queue=43.0ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "morefun", "vendor", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303967, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.441] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:44:17Z", "value" => "kiosk_launcher"} [2026-06-17 06:41:04.502] [DEBUG] QUERY OK db=19.4ms queue=41.2ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "kiosk_launcher", "model", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303968, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.502] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:44:17Z", "value" => "1.0"} [2026-06-17 06:41:04.518] [DEBUG] QUERY OK db=15.5ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "1.0", "app_version", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303969, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.519] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:44:17Z", "value" => "13"} [2026-06-17 06:41:04.548] [DEBUG] QUERY OK db=28.8ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "13", "android_version", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303970, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.549] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:44:17Z", "value" => "916"} [2026-06-17 06:41:04.584] [DEBUG] QUERY OK db=33.3ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "916", "ram_free_mb", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303971, itemkey: "ram_free_mb", value: "916", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.585] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:44:17Z", "value" => "WIFI"} [2026-06-17 06:41:04.600] [DEBUG] QUERY OK db=14.8ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "WIFI", "network_type", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303972, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.601] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:44:17Z", "value" => "true"} [2026-06-17 06:41:04.614] [DEBUG] QUERY OK db=12.7ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "true", "kiosk_active", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303973, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.615] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:44:17Z", "value" => ""} [2026-06-17 06:41:04.636] [DEBUG] QUERY OK db=19.4ms queue=1.0ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:44:17Z", "sim_operator", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303974, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.636] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"} [2026-06-17 06:41:04.671] [DEBUG] QUERY OK db=34.3ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "UNKNOWN", "sim_number", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303975, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.671] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"} [2026-06-17 06:41:04.693] [DEBUG] QUERY OK db=21.0ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "UNKNOWN", "sim_iccid", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303976, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.694] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"} [2026-06-17 06:41:04.709] [DEBUG] QUERY OK db=13.1ms queue=1.2ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "UNKNOWN", "sim_imsi", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303977, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.710] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"} [2026-06-17 06:41:04.742] [DEBUG] QUERY OK db=32.3ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "UNKNOWN", "sim_iccid2", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303978, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.743] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:44:17Z", "value" => "UNKNOWN"} [2026-06-17 06:41:04.826] [DEBUG] QUERY OK db=82.4ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "UNKNOWN", "sim_imsi2", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303979, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.826] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:44:17Z", "value" => "5"} [2026-06-17 06:41:04.849] [DEBUG] QUERY OK db=22.5ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "5", "data_usage_mb", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303980, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.850] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:44:17Z", "value" => "0"} [2026-06-17 06:41:04.867] [DEBUG] QUERY OK db=17.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "0", "mobile_data_mb", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303981, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.871] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:44:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 06:41:04.918] [DEBUG] QUERY OK db=46.3ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39104, ~N[2026-06-17 06:41:04], ~N[2026-06-17 06:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:41:04.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303982, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T14:44:17Z", message: nil, status_log_id: 39104, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:41:04], updated_at: ~N[2026-06-17 06:41:04]}} [2026-06-17 06:41:04.922] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=53.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:41:04.922] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 06:37:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 06:37:38]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 06:41:04]}] [2026-06-17 06:42:39.057] [INFO ] Running offline device check... [2026-06-17 06:42:39.057] [INFO ] Starting offline device check... [2026-06-17 06:42:39.059] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=996.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:678 [2026-06-17 06:42:39.065] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=243.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.069] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [2] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.070] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [3] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.071] [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 [4] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.072] [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 [5] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.073] [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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.073] [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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.074] [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 [8] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.074] [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 [9] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.076] [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 [10] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.080] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.080] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 [15] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [16] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [18] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [19] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.123] [DEBUG] QUERY OK source="tms_terminals" db=22.6ms idle=8.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:42:39], 19] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:725 [2026-06-17 06:42:39.124] [INFO ] Terminal 98250623730001 back online [2026-06-17 06:42:39.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=23.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.126] [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 [22] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.127] [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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.128] [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 [26] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.129] [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 [29] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.138] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [35] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.140] [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 [36] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.146] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms 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 [37] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.146] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [39] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.151] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.152] [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 [44] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.160] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms 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 [45] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [46] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.163] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [47] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [48] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.167] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.172] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [51] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.176] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=8.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.177] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [55] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:42:39.178] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 06:42:39.178] [INFO ] Offline device check completed successfully [2026-06-17 06:46:14.513] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "98251226730002"} [2026-06-17 06:46:14.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms idle=745.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 06:46:14.716] [DEBUG] QUERY OK source="tms_terminal_status_items" db=177.7ms queue=5.1ms idle=683.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, 39047, 39046, 39045, ...] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 06:46:14.890] [DEBUG] Replied in 377ms [2026-06-17 06:46:16.539] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:46:16.539] [DEBUG] Replied in 156µs [2026-06-17 06:46:16.539] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:46:16.541] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=763.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:46:16.541] [DEBUG] Replied in 2ms [2026-06-17 06:46:17.553] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:46:17.553] [DEBUG] Replied in 261µs [2026-06-17 06:46:17.553] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 06:46:17.554] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1012.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 06:46:17.554] [DEBUG] Replied in 1ms [2026-06-17 06:46:30.153] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "98251226730002"} [2026-06-17 06:46:30.160] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms idle=332.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 06:46:30.358] [DEBUG] QUERY OK source="tms_terminal_status_items" db=177.8ms queue=6.9ms idle=323.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, 39047, 39046, 39045, ...] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 06:46:30.537] [DEBUG] Replied in 384ms [2026-06-17 06:46:32.819] [DEBUG] HANDLE EVENT "set_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"tab" => "history", "value" => ""} [2026-06-17 06:46:32.819] [DEBUG] Replied in 280µs [2026-06-17 06:46:35.317] [DEBUG] HANDLE EVENT "set_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"tab" => "location", "value" => ""} [2026-06-17 06:46:35.326] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms queue=0.3ms idle=1466.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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:483 [2026-06-17 06:46:35.328] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.5ms queue=1.2ms idle=489.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` = ?) ORDER BY t0.`status_log_id` [39103] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:483 [2026-06-17 06:46:35.328] [DEBUG] Replied in 11ms [2026-06-17 06:46:41.272] [DEBUG] HANDLE EVENT "set_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"tab" => "details", "value" => ""} [2026-06-17 06:46:41.272] [DEBUG] Replied in 210µs [2026-06-17 06:47:38.882] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 06:47:38.884] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=806.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-06-17 06:47:38.886] [DEBUG] QUERY OK source="filter_usage" db=1.8ms idle=10.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-06-17 06:47:38.886] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 06:47:39.179] [INFO ] Running offline device check... [2026-06-17 06:47:39.179] [INFO ] Starting offline device check... [2026-06-17 06:47:39.181] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=293.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:678 [2026-06-17 06:47:39.189] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms idle=102.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.195] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms 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 [2] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.200] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.8ms 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 [3] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.203] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.2ms 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 [4] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.205] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.6ms 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 [5] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.206] [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 [6] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.212] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=3.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 [7] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [8] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.214] [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 [9] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [10] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.222] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.223] [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 [12] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.230] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms queue=1.2ms idle=7.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/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.237] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [15] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.238] [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 [16] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.240] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [18] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.253] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.2ms 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 [19] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.260] [DEBUG] QUERY OK source="tms_terminals" db=7.1ms queue=0.1ms idle=12.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:47:39], 19] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:725 [2026-06-17 06:47:39.260] [INFO ] Terminal 98250623730001 back online [2026-06-17 06:47:39.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.4ms 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 [20] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.263] [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 [22] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.265] [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 [23] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.266] [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 [26] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.269] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.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 [29] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.281] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [33] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.283] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.0ms 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 [35] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.284] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [36] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.3ms 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 [39] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms queue=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 [42] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [43] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.301] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [44] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.307] [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 [46] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.308] [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 [47] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.309] [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 [48] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.309] [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 [49] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.311] [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 [51] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.312] [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 [53] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.313] [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 [55] ↳ anonymous fn/2 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:691 [2026-06-17 06:47:39.313] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 06:47:39.314] [INFO ] Offline device check completed successfully [2026-06-17 06:50:06.392] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 06:50:06.392] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T22:00:27Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T22:00:27Z","value":"27"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T22:00:27Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T22:00:27Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T22:00:27Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T22:00:27Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T22:00:27Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T22:00:27Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T22:00:27Z","vendor":"MoreFun"} [2026-06-17 06:50:06.393] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:00:27Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:00:27Z", "value" => "27"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:00:27Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:00:27Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:00:27Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:00:27Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:00:27Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:00:27Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T22:00:27Z", "vendor" => "MoreFun"} [2026-06-17 06:50:06.393] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 06:50:06.393] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 06:50:06.393] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 06:50:06.394] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=744.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-06-17 06:50:06.395] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=467.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:50:06.397] [DEBUG] QUERY OK source="parameter_template_values" db=1.8ms idle=1.3ms 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-06-17 06:50:06.400] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=1.5ms 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-06-17 06:50:06.402] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms idle=3.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:132 [2026-06-17 06:50:06.443] [DEBUG] QUERY OK source="pos_merchant" db=40.5ms idle=1.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:143 [2026-06-17 06:50:06.445] [DEBUG] QUERY OK db=0.6ms queue=0.8ms idle=1532.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 ["419926360000000"] [2026-06-17 06:50:06.445] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, softpos_uuid= [2026-06-17 06:50:06.446] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms idle=42.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:229 [2026-06-17 06:50:06.446] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 06:50:06.447] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 06:50:06.484] [DEBUG] QUERY OK db=32.9ms queue=2.7ms idle=4.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`template_id`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`parameters_sent`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8857ea1f4bf03dbd0e94d88659dac182afde0ead443619306784bfd02a0ee800", 54788, 864, "priv/ota/98250623730001/params.zip", 19, "parameter", 10, "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:50:06Z], %{"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", ...}, "1.0.0", ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:50:06.484] [INFO ] AutoPushService: Created push log 29703 for MF919 params.zip [2026-06-17 06:50:06.484] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 54788, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:50:06.484] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 06:50:06.484] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 06:50:06.488] [DEBUG] QUERY OK source="config_file_versions" db=3.8ms idle=38.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-06-17 06:50:06.492] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:50:06.509] [DEBUG] QUERY OK db=14.3ms queue=0.7ms idle=10.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "36dfebcd64aad3f0462d31d507e96e21e64bb0af5491853521128c483f100e2f", 34853, 17947, "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:50:06Z], "1.0.1", ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:50:06.509] [INFO ] AutoPushService: Created push log 29704 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:50:06.509] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 34853, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:50:06.509] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 06:50:06.509] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 06:50:06.510] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=20.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-06-17 06:50:06.511] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 06:50:06.513] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=3.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:50:06.514] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:50:06.515] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:50:06.515] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:50:06.515] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:50:06.517] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms 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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 06:50:06.518] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:50:06.518] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 06:50:06.520] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.1ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:50:06.520] [INFO ] Terminal updated: 98250623730001 [2026-06-17 06:50:06.546] [DEBUG] QUERY OK source="tms_terminals" db=25.0ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:50:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:50:06.547] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=26.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-06-17 06:50:06.548] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 06:50:06.549] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 06:50:06.549] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 06:50:06.550] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 06:50:06.579] [DEBUG] QUERY OK source="tms_terminals" db=28.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:50:06], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:50:06.596] [DEBUG] QUERY OK db=15.7ms queue=0.2ms idle=29.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-16T22:00:27Z", ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:50:06.596] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39105, oid: "organization_id", upload_time: "2026-06-16T22:00:27Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]} [2026-06-17 06:50:06.596] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:00:27Z", "value" => "online"} [2026-06-17 06:50:06.632] [DEBUG] QUERY OK db=34.4ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-16T22:00:27Z", "online", "status", 39105, ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:06.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303983, itemkey: "status", value: "online", timestamp: "2026-06-16T22:00:27Z", message: "Terminal status update", status_log_id: 39105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]}} [2026-06-17 06:50:06.633] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 06:50:06.633] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:00:27Z", "value" => "27"} [2026-06-17 06:50:06.647] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 06:50:06.704] [DEBUG] QUERY OK db=70.1ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-16T22:00:27Z", "27", "battery", 39105, ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:06.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303984, itemkey: "battery", value: "27", timestamp: "2026-06-16T22:00:27Z", message: "Battery level", status_log_id: 39105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]}} [2026-06-17 06:50:06.705] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:00:27Z", "value" => "online"} [2026-06-17 06:50:06.752] [DEBUG] QUERY OK db=46.0ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-16T22:00:27Z", "online", "network", 39105, ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:06.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303985, itemkey: "network", value: "online", timestamp: "2026-06-16T22:00:27Z", message: "Network connectivity", status_log_id: 39105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]}} [2026-06-17 06:50:06.752] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 06:50:06.753] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:00:27Z", "value" => "0"} [2026-06-17 06:50:06.753] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 06:50:06.786] [DEBUG] QUERY OK db=31.0ms queue=2.0ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-16T22:00:27Z", "0", "cpu", 39105, ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:06.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303986, itemkey: "cpu", value: "0", timestamp: "2026-06-16T22:00:27Z", message: "CPU usage percentage", status_log_id: 39105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]}} [2026-06-17 06:50:06.787] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:00:27Z", "value" => "1.0.0"} [2026-06-17 06:50:06.809] [DEBUG] QUERY OK db=21.8ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-16T22:00:27Z", "1.0.0", "parameter_config", 39105, ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:06.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303987, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-16T22:00:27Z", message: "Current parameters version", status_log_id: 39105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]}} [2026-06-17 06:50:06.812] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:00:27Z", "value" => "1.0.1"} [2026-06-17 06:50:06.860] [DEBUG] QUERY OK db=44.4ms queue=0.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-16T22:00:27Z", "1.0.1", "emv_config", 39105, ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:06.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303988, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-16T22:00:27Z", message: "Current EMV config version", status_log_id: 39105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]}} [2026-06-17 06:50:06.861] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:00:27Z", "value" => ""} [2026-06-17 06:50:06.937] [DEBUG] QUERY OK db=29.8ms queue=41.6ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-16T22:00:27Z", "keys_config", 39105, ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:06.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303989, itemkey: "keys_config", value: nil, timestamp: "2026-06-16T22:00:27Z", message: "Current keys config version", status_log_id: 39105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]}} [2026-06-17 06:50:06.937] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:00:27Z", "value" => "3.8.5"} [2026-06-17 06:50:06.953] [DEBUG] QUERY OK db=14.8ms 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-06-16T22:00:27Z", "3.8.5", "application", 39105, ~N[2026-06-17 06:50:06], ~N[2026-06-17 06:50:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:06.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303990, itemkey: "application", value: "3.8.5", timestamp: "2026-06-16T22:00:27Z", message: "Current application version", status_log_id: 39105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:06], updated_at: ~N[2026-06-17 06:50:06]}} [2026-06-17 06:50:06.954] [WARN ] Unexpected async result [2026-06-17 06:50:06.954] [WARN ] Unexpected async result [2026-06-17 06:50:06.955] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=17.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:50:06.957] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 06:37:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 06:50:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 06:41:04]}] [2026-06-17 06:50:07.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=64.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:380 [2026-06-17 06:50:07.522] [DEBUG] QUERY OK source="tms_terminal_status_items" db=328.3ms queue=82.2ms idle=155.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, 39047, 39046, 39045, ...] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:380 [2026-06-17 06:50:21.451] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 06:50:21.451] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T22:00:42Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T22:00:42Z","value":"27"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T22:00:42Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T22:00:42Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T22:00:42Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T22:00:42Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T22:00:42Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T22:00:42Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T22:00:42Z","vendor":"MoreFun"} [2026-06-17 06:50:21.453] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:00:42Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:00:42Z", "value" => "27"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:00:42Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:00:42Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:00:42Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:00:42Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:00:42Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:00:42Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T22:00:42Z", "vendor" => "MoreFun"} [2026-06-17 06:50:21.453] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 06:50:21.454] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 06:50:21.454] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 06:50:21.457] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms queue=0.1ms idle=1527.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-06-17 06:50:21.459] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=757.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:50:21.460] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms idle=1.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-06-17 06:50:21.463] [DEBUG] QUERY OK source="parameter_definitions" db=1.6ms queue=0.8ms 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-06-17 06:50:21.464] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=3.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:132 [2026-06-17 06:50:21.505] [DEBUG] QUERY OK source="pos_merchant" db=40.3ms idle=1.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:143 [2026-06-17 06:50:21.507] [DEBUG] QUERY OK db=0.8ms queue=0.9ms idle=1594.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 ["419926360000000"] [2026-06-17 06:50:21.507] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, softpos_uuid= [2026-06-17 06:50:21.507] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms 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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:229 [2026-06-17 06:50:21.508] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 06:50:21.508] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 06:50:21.522] [DEBUG] QUERY OK db=12.5ms idle=4.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`template_id`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`parameters_sent`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1ff518aa9f931ea8eef034d916489801b0491890a5bea32596563e478c82db74", 54980, 864, "priv/ota/98250623730001/params.zip", 19, "parameter", 10, "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:50:21Z], %{"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", ...}, "1.0.0", ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:50:21.523] [INFO ] AutoPushService: Created push log 29705 for MF919 params.zip [2026-06-17 06:50:21.523] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 54980, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:50:21.523] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 06:50:21.523] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 06:50:21.524] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=16.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-06-17 06:50:21.530] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:50:21.542] [DEBUG] QUERY OK db=11.0ms idle=8.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5413dd2d7ccf8cfd8aec78322699ec281c326648f8ccd4dbcbf8cd1ef2f32aca", 33154, 17947, "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:50:21Z], "1.0.1", ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:50:21.542] [INFO ] AutoPushService: Created push log 29706 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:50:21.542] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 33154, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:50:21.542] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 06:50:21.543] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 06:50:21.544] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=18.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-06-17 06:50:21.544] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 06:50:21.547] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:50:21.547] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:50:21.549] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:50:21.549] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:50:21.549] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:50:21.551] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=4.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-06-17 06:50:21.551] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:50:21.551] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 06:50:21.553] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=5.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:50:21.553] [INFO ] Terminal updated: 98250623730001 [2026-06-17 06:50:21.588] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:50:21], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:50:21.589] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=35.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-06-17 06:50:21.589] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-06-17 06:50:21.590] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=0.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-06-17 06:50:21.590] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 06:50:21.591] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 06:50:21.615] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:50:21], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:50:21.629] [DEBUG] QUERY OK db=12.5ms queue=0.6ms idle=24.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-16T22:00:42Z", ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:50:21.629] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39106, oid: "organization_id", upload_time: "2026-06-16T22:00:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]} [2026-06-17 06:50:21.629] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:00:42Z", "value" => "online"} [2026-06-17 06:50:21.650] [DEBUG] QUERY OK db=20.1ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-16T22:00:42Z", "online", "status", 39106, ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:21.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303991, itemkey: "status", value: "online", timestamp: "2026-06-16T22:00:42Z", message: "Terminal status update", status_log_id: 39106, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]}} [2026-06-17 06:50:21.650] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 06:50:21.652] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:00:42Z", "value" => "27"} [2026-06-17 06:50:21.652] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 06:50:21.685] [DEBUG] QUERY OK db=32.9ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-16T22:00:42Z", "27", "battery", 39106, ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:21.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303992, itemkey: "battery", value: "27", timestamp: "2026-06-16T22:00:42Z", message: "Battery level", status_log_id: 39106, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]}} [2026-06-17 06:50:21.685] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:00:42Z", "value" => "online"} [2026-06-17 06:50:21.705] [DEBUG] QUERY OK db=19.6ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-16T22:00:42Z", "online", "network", 39106, ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:21.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303993, itemkey: "network", value: "online", timestamp: "2026-06-16T22:00:42Z", message: "Network connectivity", status_log_id: 39106, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]}} [2026-06-17 06:50:21.706] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 06:50:21.708] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:00:42Z", "value" => "0"} [2026-06-17 06:50:21.708] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 06:50:21.729] [DEBUG] QUERY OK db=19.9ms idle=5.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-16T22:00:42Z", "0", "cpu", 39106, ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:21.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303994, itemkey: "cpu", value: "0", timestamp: "2026-06-16T22:00:42Z", message: "CPU usage percentage", status_log_id: 39106, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]}} [2026-06-17 06:50:21.729] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:00:42Z", "value" => "1.0.0"} [2026-06-17 06:50:21.753] [DEBUG] QUERY OK db=24.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-16T22:00:42Z", "1.0.0", "parameter_config", 39106, ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:21.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303995, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-16T22:00:42Z", message: "Current parameters version", status_log_id: 39106, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]}} [2026-06-17 06:50:21.754] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:00:42Z", "value" => "1.0.1"} [2026-06-17 06:50:21.786] [DEBUG] QUERY OK db=31.3ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-16T22:00:42Z", "1.0.1", "emv_config", 39106, ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:21.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303996, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-16T22:00:42Z", message: "Current EMV config version", status_log_id: 39106, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]}} [2026-06-17 06:50:21.786] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:00:42Z", "value" => ""} [2026-06-17 06:50:21.798] [DEBUG] QUERY OK db=11.2ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-16T22:00:42Z", "keys_config", 39106, ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:21.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303997, itemkey: "keys_config", value: nil, timestamp: "2026-06-16T22:00:42Z", message: "Current keys config version", status_log_id: 39106, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]}} [2026-06-17 06:50:21.798] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:00:42Z", "value" => "3.8.5"} [2026-06-17 06:50:21.811] [DEBUG] QUERY OK db=13.0ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-06-16T22:00:42Z", "3.8.5", "application", 39106, ~N[2026-06-17 06:50:21], ~N[2026-06-17 06:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:21.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303998, itemkey: "application", value: "3.8.5", timestamp: "2026-06-16T22:00:42Z", message: "Current application version", status_log_id: 39106, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:21], updated_at: ~N[2026-06-17 06:50:21]}} [2026-06-17 06:50:21.812] [WARN ] Unexpected async result [2026-06-17 06:50:21.812] [WARN ] Unexpected async result [2026-06-17 06:50:21.814] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=15.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:50:21.817] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 06:37:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 06:50:21]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 06:41:04]}] [2026-06-17 06:50:21.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms queue=0.2ms 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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:380 [2026-06-17 06:50:22.040] [DEBUG] QUERY OK source="tms_terminal_status_items" db=199.2ms queue=9.0ms idle=17.6ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, 39047, 39046, 39045, ...] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:380 [2026-06-17 06:50:42.137] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 06:50:42.137] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T22:01:03Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T22:01:03Z","value":"27"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T22:01:03Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T22:01:03Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T22:01:03Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T22:01:03Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T22:01:03Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T22:01:03Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T22:01:03Z","vendor":"MoreFun"} [2026-06-17 06:50:42.141] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:01:03Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:01:03Z", "value" => "27"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:01:03Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:01:03Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:01:03Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:01:03Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:01:03Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:01:03Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T22:01:03Z", "vendor" => "MoreFun"} [2026-06-17 06:50:42.141] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 06:50:42.141] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 06:50:42.141] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 06:50:42.142] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=1211.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-06-17 06:50:42.144] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=386.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:50:42.145] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms 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-06-17 06:50:42.147] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.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-06-17 06:50:42.148] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.1ms idle=2.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:132 [2026-06-17 06:50:42.188] [DEBUG] QUERY OK source="pos_merchant" db=39.6ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:143 [2026-06-17 06:50:42.189] [DEBUG] QUERY OK db=0.5ms queue=0.9ms idle=1275.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 ["419926360000000"] [2026-06-17 06:50:42.189] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, softpos_uuid= [2026-06-17 06:50:42.190] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=41.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:229 [2026-06-17 06:50:42.190] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 06:50:42.191] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 06:50:42.208] [DEBUG] QUERY OK db=15.4ms queue=0.1ms idle=4.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`template_id`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`parameters_sent`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1ee64a78ad71d0b0cd1ffe2d434648a220c9954b59bf02af04332662f5503da9", 24419, 864, "priv/ota/98250623730001/params.zip", 19, "parameter", 10, "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:50:42Z], %{"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", ...}, "1.0.0", ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:50:42.208] [INFO ] AutoPushService: Created push log 29707 for MF919 params.zip [2026-06-17 06:50:42.209] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 24419, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:50:42.209] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 06:50:42.209] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 06:50:42.213] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=21.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-06-17 06:50:42.218] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:50:42.238] [DEBUG] QUERY OK db=18.1ms idle=11.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "063ba11b8bbb47bbda12f5c5b8549d079e399474d3831b2bb6e6e87049c2f8e1", 33186, 17947, "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:50:42Z], "1.0.1", ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:50:42.238] [INFO ] AutoPushService: Created push log 29708 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:50:42.238] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 33186, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:50:42.239] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 06:50:42.239] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 06:50:42.242] [DEBUG] QUERY OK source="config_file_versions" db=3.0ms idle=26.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-06-17 06:50:42.242] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 06:50:42.243] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:50:42.244] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:50:42.245] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:50:42.245] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:50:42.245] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:50:42.248] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms 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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 06:50:42.250] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:50:42.250] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 06:50:42.251] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=7.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:50:42.251] [INFO ] Terminal updated: 98250623730001 [2026-06-17 06:50:42.275] [DEBUG] QUERY OK source="tms_terminals" db=23.0ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:50:42], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:50:42.276] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=23.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-06-17 06:50:42.277] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-06-17 06:50:42.278] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-06-17 06:50:42.278] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 06:50:42.279] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 06:50:42.302] [DEBUG] QUERY OK source="tms_terminals" db=22.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:50:42], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:50:42.315] [DEBUG] QUERY OK db=12.5ms queue=0.1ms idle=22.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-16T22:01:03Z", ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:50:42.315] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39107, oid: "organization_id", upload_time: "2026-06-16T22:01:03Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]} [2026-06-17 06:50:42.315] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:01:03Z", "value" => "online"} [2026-06-17 06:50:42.337] [DEBUG] QUERY OK db=20.8ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-16T22:01:03Z", "online", "status", 39107, ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:42.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 303999, itemkey: "status", value: "online", timestamp: "2026-06-16T22:01:03Z", message: "Terminal status update", status_log_id: 39107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]}} [2026-06-17 06:50:42.337] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 06:50:42.337] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:01:03Z", "value" => "27"} [2026-06-17 06:50:42.354] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 06:50:42.373] [DEBUG] QUERY OK db=34.9ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-16T22:01:03Z", "27", "battery", 39107, ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:42.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304000, itemkey: "battery", value: "27", timestamp: "2026-06-16T22:01:03Z", message: "Battery level", status_log_id: 39107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]}} [2026-06-17 06:50:42.375] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:01:03Z", "value" => "online"} [2026-06-17 06:50:42.395] [DEBUG] QUERY OK db=20.0ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-16T22:01:03Z", "online", "network", 39107, ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:42.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304001, itemkey: "network", value: "online", timestamp: "2026-06-16T22:01:03Z", message: "Network connectivity", status_log_id: 39107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]}} [2026-06-17 06:50:42.396] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 06:50:42.397] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 06:50:42.397] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:01:03Z", "value" => "0"} [2026-06-17 06:50:42.412] [DEBUG] QUERY OK db=13.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-16T22:01:03Z", "0", "cpu", 39107, ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:42.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304002, itemkey: "cpu", value: "0", timestamp: "2026-06-16T22:01:03Z", message: "CPU usage percentage", status_log_id: 39107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]}} [2026-06-17 06:50:42.413] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:01:03Z", "value" => "1.0.0"} [2026-06-17 06:50:42.435] [DEBUG] QUERY OK db=21.5ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-16T22:01:03Z", "1.0.0", "parameter_config", 39107, ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:42.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304003, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-16T22:01:03Z", message: "Current parameters version", status_log_id: 39107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]}} [2026-06-17 06:50:42.436] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:01:03Z", "value" => "1.0.1"} [2026-06-17 06:50:42.459] [DEBUG] QUERY OK db=22.8ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-16T22:01:03Z", "1.0.1", "emv_config", 39107, ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:42.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304004, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-16T22:01:03Z", message: "Current EMV config version", status_log_id: 39107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]}} [2026-06-17 06:50:42.460] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:01:03Z", "value" => ""} [2026-06-17 06:50:42.483] [DEBUG] QUERY OK db=22.3ms queue=0.3ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-16T22:01:03Z", "keys_config", 39107, ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:42.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304005, itemkey: "keys_config", value: nil, timestamp: "2026-06-16T22:01:03Z", message: "Current keys config version", status_log_id: 39107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]}} [2026-06-17 06:50:42.484] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:01:03Z", "value" => "3.8.5"} [2026-06-17 06:50:42.498] [DEBUG] QUERY OK db=13.8ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-06-16T22:01:03Z", "3.8.5", "application", 39107, ~N[2026-06-17 06:50:42], ~N[2026-06-17 06:50:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:42.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304006, itemkey: "application", value: "3.8.5", timestamp: "2026-06-16T22:01:03Z", message: "Current application version", status_log_id: 39107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:42], updated_at: ~N[2026-06-17 06:50:42]}} [2026-06-17 06:50:42.498] [WARN ] Unexpected async result [2026-06-17 06:50:42.498] [WARN ] Unexpected async result [2026-06-17 06:50:42.500] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=15.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:50:42.502] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 06:37:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 06:50:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 06:41:04]}] [2026-06-17 06:50:42.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:380 [2026-06-17 06:50:42.821] [DEBUG] QUERY OK source="tms_terminal_status_items" db=300.5ms queue=5.0ms idle=15.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, 39047, 39046, 39045, ...] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:380 [2026-06-17 06:50:59.469] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 06:50:59.469] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T22:01:20Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T22:01:20Z","value":"27"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T22:01:20Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T22:01:20Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T22:01:20Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T22:01:20Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T22:01:20Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T22:01:20Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T22:01:20Z","vendor":"MoreFun"} [2026-06-17 06:50:59.469] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:01:20Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:01:20Z", "value" => "27"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:01:20Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:01:20Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:01:20Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:01:20Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:01:20Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:01:20Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T22:01:20Z", "vendor" => "MoreFun"} [2026-06-17 06:50:59.469] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 06:50:59.469] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 06:50:59.469] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 06:50:59.470] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1538.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-06-17 06:50:59.471] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=661.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:50:59.472] [DEBUG] QUERY OK source="parameter_template_values" db=0.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-06-17 06:50:59.474] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.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-06-17 06:50:59.475] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=2.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:132 [2026-06-17 06:50:59.515] [DEBUG] QUERY OK source="pos_merchant" db=39.0ms idle=1.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:143 [2026-06-17 06:50:59.516] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1601.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 ["419926360000000"] [2026-06-17 06:50:59.516] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, softpos_uuid= [2026-06-17 06:50:59.517] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.3ms 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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:229 [2026-06-17 06:50:59.517] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 06:50:59.518] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 06:50:59.537] [DEBUG] QUERY OK db=17.8ms idle=4.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`template_id`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`parameters_sent`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "31ce6f4569217b8faf7cee2615e9f3b2f505aa12215025fa091b1843d9a89133", 24579, 864, "priv/ota/98250623730001/params.zip", 19, "parameter", 10, "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:50:59Z], %{"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", ...}, "1.0.0", ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 06:50:59.537] [INFO ] AutoPushService: Created push log 29709 for MF919 params.zip [2026-06-17 06:50:59.537] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 24579, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 06:50:59.537] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 06:50:59.538] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 06:50:59.539] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=20.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-06-17 06:50:59.542] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 06:50:59.571] [DEBUG] QUERY OK db=27.6ms idle=6.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`config_type`,`device_vendor`,`device_model`,`trigger_reason`,`push_type`,`log_time`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "71bcb2b0851809317d3d7faab91796ad53d20fa8a555f3a9947fbe9c3bde2d78", 24643, 17947, "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MoreFun", "MF919", "missing_version", "full", ~U[2026-06-17 06:50:59Z], "1.0.1", ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 06:50:59.571] [INFO ] AutoPushService: Created push log 29710 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 06:50:59.571] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 24643, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 06:50:59.572] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 06:50:59.572] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 06:50:59.573] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=33.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-06-17 06:50:59.573] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 06:50:59.574] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 06:50:59.575] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 06:50:59.577] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 06:50:59.577] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:50:59.577] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 06:50:59.579] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=4.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-06-17 06:50:59.580] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 06:50:59.580] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 06:50:59.581] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=5.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 06:50:59.581] [INFO ] Terminal updated: 98250623730001 [2026-06-17 06:50:59.605] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 06:50:59], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 06:50:59.606] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.3ms idle=24.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-06-17 06:50:59.607] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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-06-17 06:50:59.608] [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-06-17 06:50:59.608] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 06:50:59.609] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 06:50:59.621] [DEBUG] QUERY OK source="tms_terminals" db=12.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 06:50:59], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 06:50:59.633] [DEBUG] QUERY OK db=11.3ms queue=0.3ms idle=13.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-16T22:01:20Z", ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 06:50:59.634] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39108, oid: "organization_id", upload_time: "2026-06-16T22:01:20Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]} [2026-06-17 06:50:59.634] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:01:20Z", "value" => "online"} [2026-06-17 06:50:59.666] [DEBUG] QUERY OK db=30.8ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-16T22:01:20Z", "online", "status", 39108, ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:59.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304007, itemkey: "status", value: "online", timestamp: "2026-06-16T22:01:20Z", message: "Terminal status update", status_log_id: 39108, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]}} [2026-06-17 06:50:59.666] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 06:50:59.666] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:01:20Z", "value" => "27"} [2026-06-17 06:50:59.672] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 06:50:59.690] [DEBUG] QUERY OK db=23.8ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-16T22:01:20Z", "27", "battery", 39108, ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:59.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304008, itemkey: "battery", value: "27", timestamp: "2026-06-16T22:01:20Z", message: "Battery level", status_log_id: 39108, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]}} [2026-06-17 06:50:59.691] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:01:20Z", "value" => "online"} [2026-06-17 06:50:59.710] [DEBUG] QUERY OK db=18.4ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-16T22:01:20Z", "online", "network", 39108, ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:59.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304009, itemkey: "network", value: "online", timestamp: "2026-06-16T22:01:20Z", message: "Network connectivity", status_log_id: 39108, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]}} [2026-06-17 06:50:59.710] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 06:50:59.710] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:01:20Z", "value" => "0"} [2026-06-17 06:50:59.710] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 06:50:59.729] [DEBUG] QUERY OK db=18.7ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-16T22:01:20Z", "0", "cpu", 39108, ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:59.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304010, itemkey: "cpu", value: "0", timestamp: "2026-06-16T22:01:20Z", message: "CPU usage percentage", status_log_id: 39108, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]}} [2026-06-17 06:50:59.730] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:01:20Z", "value" => "1.0.0"} [2026-06-17 06:50:59.744] [DEBUG] QUERY OK db=13.6ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-16T22:01:20Z", "1.0.0", "parameter_config", 39108, ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:59.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304011, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-16T22:01:20Z", message: "Current parameters version", status_log_id: 39108, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]}} [2026-06-17 06:50:59.745] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:01:20Z", "value" => "1.0.1"} [2026-06-17 06:50:59.771] [DEBUG] QUERY OK db=26.1ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-16T22:01:20Z", "1.0.1", "emv_config", 39108, ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:59.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304012, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-16T22:01:20Z", message: "Current EMV config version", status_log_id: 39108, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]}} [2026-06-17 06:50:59.771] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:01:20Z", "value" => ""} [2026-06-17 06:50:59.835] [DEBUG] QUERY OK db=22.5ms queue=40.5ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-16T22:01:20Z", "keys_config", 39108, ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:59.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304013, itemkey: "keys_config", value: nil, timestamp: "2026-06-16T22:01:20Z", message: "Current keys config version", status_log_id: 39108, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]}} [2026-06-17 06:50:59.835] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:01:20Z", "value" => "3.8.5"} [2026-06-17 06:50:59.861] [DEBUG] QUERY OK db=24.9ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-06-16T22:01:20Z", "3.8.5", "application", 39108, ~N[2026-06-17 06:50:59], ~N[2026-06-17 06:50:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 06:50:59.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304014, itemkey: "application", value: "3.8.5", timestamp: "2026-06-16T22:01:20Z", message: "Current application version", status_log_id: 39108, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 06:50:59], updated_at: ~N[2026-06-17 06:50:59]}} [2026-06-17 06:50:59.861] [WARN ] Unexpected async result [2026-06-17 06:50:59.862] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=26.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 06:50:59.861] [WARN ] Unexpected async result [2026-06-17 06:50:59.863] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 06:37:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 06:50:59]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 06:41:04]}] [2026-06-17 06:50:59.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=29.6ms queue=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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:380 [2026-06-17 06:51:00.300] [DEBUG] QUERY OK source="tms_terminal_status_items" db=302.4ms queue=51.9ms idle=83.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, 39047, 39046, 39045, ...] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:380 [2026-06-17 06:52:18.956] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 06:52:18.956] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T22:02:39Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T22:02:39Z","value":"27"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T22:02:39Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T22:02:39Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T22:02:39Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T22:02:39Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T22:02:39Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T22:02:39Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T22:02:39Z","vendor":"MoreFun"} [2026-06-17 06:52:18.959] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:02:39Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:02:39Z", "value" => "27"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:02:39Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:02:39Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:02:39Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:02:39Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:02:39Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:02:39Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T22:02:39Z", "vendor" => "MoreFun"} [2026-06-17 06:52:18.959] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 06:52:18.959] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 06:52:18.960] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 06:52:18.961] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=840.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-06-17 06:52:18.962] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=151.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 06:52:18.963] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=1.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-06-17 06:52:18.965] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.4ms idle=1.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-06-17 06:52:18.967] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms queue=0.4ms idle=3.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:133 [2026-06-17 06:52:19.006] [DEBUG] QUERY OK source="pos_merchant" db=38.3ms queue=0.8ms idle=2.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:144 [2026-06-17 06:52:19.008] [DEBUG] QUERY OK db=0.5ms queue=0.4ms idle=72.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 ["419926360000000"] [2026-06-17 06:52:19.008] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, softpos_uuid= [2026-06-17 06:52:19.009] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=41.0ms 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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:230 [2026-06-17 06:52:19.009] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 06:52:19.009] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (KeyError) key :mqtt_heartbeat_interval not found in: %{ business_name: "Kalyan Mart", qr_use_ssl: "", qr_ssl_button_enabled: "", softpos_uuid: "" } (tms_core 0.1.0) lib/tms_core/terminal_management/params_zip_builder.ex:69: TmsCore.TerminalManagement.ParamsZipBuilder.fetch_merchant_data/1 (tms_core 0.1.0) lib/tms_core/terminal_management/params_zip_builder.ex:38: TmsCore.TerminalManagement.ParamsZipBuilder.build_and_store/2 (tms_core 0.1.0) lib/tms_core/terminal_management/auto_push_service.ex:182: TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6 (tms_core 0.1.0) lib/tms_core/terminal_management/auto_push_service.ex:40: TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:93: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 140, 8, 0, 25, 116, 109, 115, 47, 115, 116, 97, 116, 117, 115, 47, 57, 56, 50, 53, 48, 54, 50, 51, 55, 51, 48, 48, 48, 49, 0, 8, 123, 34, 111, 114, 103, 46, 100, 101, 118, 105, 99, 101, 34, 58, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{online_devices: %{"phoenix_client_shamanth" => true}, client_id: "phoenix_client_shamanth"}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 07:00:33.241] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 59m, MIS in 23h 59m [2026-06-17 07:00:33.280] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 07:00:33.287] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 07:00:34.848] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 07:00:34.850] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 07:00:34.851] [INFO ] Building initial filter cache... [2026-06-17 07:00:34.864] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=879.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-06-17 07:00:34.874] [DEBUG] QUERY OK source="filter_usage" db=0.6ms queue=0.6ms idle=51.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-06-17 07:00:34.874] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 07:00:34.987] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 07:00:35.026] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 07:00:35.040] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 07:00:37.279] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 78µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fiIlNlEZIg4DWDQyHAQJMX4zWCZfBCIsNuOF3mNw4aXCVMQT1ToEfHeD", "_live_referer" => "http://demo.ctrmv.com:4019/terminals_all/locations", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:00:38.645] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:00:38.917] [DEBUG] QUERY OK source="users_tokens" db=4.9ms queue=2.6ms idle=1130.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:00:38.837076Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:00:54.828] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 59m, MIS in 23h 59m [2026-06-17 07:00:54.954] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 07:00:54.995] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 07:00:57.085] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 07:00:57.085] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 07:00:57.087] [INFO ] Building initial filter cache... [2026-06-17 07:00:57.121] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=14.0ms idle=1225.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-06-17 07:00:57.133] [DEBUG] QUERY OK source="filter_usage" db=0.7ms queue=0.4ms idle=887.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-06-17 07:00:57.133] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 07:00:57.266] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 07:00:57.313] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 07:00:57.337] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 07:00:59.710] [INFO ] GET /terminals [2026-06-17 07:00:59.885] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 07:01:00.195] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=2.7ms idle=1171.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:01:00.151551Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 07:01:00.329] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.0ms idle=57.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:01:00.335] [DEBUG] QUERY OK source="app_packages" db=0.5ms queue=0.8ms idle=46.6ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:01:00.352] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.4ms idle=21.6ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:01:00.360] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.8ms idle=23.6ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:01:00.361] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=8.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:01:00.565] [INFO ] Sent 200 in 854ms [2026-06-17 07:01:06.076] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 40µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HW5SM1UnKQBVal4UJQQ8Jjs9AClRKCYf-98C7SEybS2eoMdCtZ7Jhdaw", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:01:07.586] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:01:07.591] [DEBUG] QUERY OK source="users_tokens" db=2.4ms queue=2.1ms idle=1555.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:01:07.587058Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:01:07.605] [DEBUG] QUERY OK source="tms_terminals" db=7.2ms queue=6.1ms idle=1206.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:01:07.616] [DEBUG] QUERY OK source="app_packages" db=8.8ms idle=180.8ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:01:07.625] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=2.2ms idle=14.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:01:07.636] [DEBUG] QUERY OK source="terminal_groups" db=8.3ms queue=2.2ms idle=8.9ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:01:07.636] [DEBUG] Replied in 49ms [2026-06-17 07:01:07.636] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:01:07.640] [DEBUG] QUERY OK source="tms_terminals" db=4.1ms idle=11.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:01:07.641] [DEBUG] Replied in 4ms [2026-06-17 07:01:13.867] [INFO ] GET /terminals [2026-06-17 07:01:13.867] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 07:01:13.885] [DEBUG] QUERY OK source="users_tokens" db=16.7ms idle=815.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:01:13.867914Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 07:01:13.905] [DEBUG] QUERY OK source="tms_terminals" db=11.2ms idle=983.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:01:13.916] [DEBUG] QUERY OK source="app_packages" db=5.9ms idle=402.0ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:01:13.921] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=15.6ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:01:13.930] [DEBUG] QUERY OK source="terminal_groups" db=4.8ms queue=0.1ms idle=9.0ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:01:13.944] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=3.2ms idle=17.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:01:13.985] [INFO ] Sent 200 in 117ms [2026-06-17 07:01:22.926] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 40µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AWJfKDI_BRxbdV4zLQsSVSNQRTBIdXMF155XPKielL2BgBJ0l7rSq94m", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:01:23.133] [INFO ] GET /images/favicon.png [2026-06-17 07:01:23.246] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/Shamanth/prverification/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/Shamanth/prverification/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-06-17 07:01:23.653] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:01:23.657] [DEBUG] QUERY OK source="users_tokens" db=3.0ms queue=0.1ms idle=591.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:01:23.653668Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:01:23.659] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.1ms idle=781.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:01:23.663] [DEBUG] QUERY OK source="app_packages" db=0.7ms queue=0.1ms idle=109.2ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:01:23.667] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms queue=0.4ms idle=4.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:01:23.669] [DEBUG] QUERY OK source="terminal_groups" db=1.4ms idle=4.6ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:01:23.672] [DEBUG] Replied in 18ms [2026-06-17 07:01:23.672] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:01:23.679] [DEBUG] QUERY OK source="tms_terminals" db=6.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:01:23.680] [DEBUG] Replied in 7ms [2026-06-17 07:01:51.536] [INFO ] GET /terminals [2026-06-17 07:01:51.536] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 07:01:51.538] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=0.2ms idle=474.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:01:51.536963Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 07:01:51.540] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.4ms idle=860.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:01:51.542] [DEBUG] QUERY OK source="app_packages" db=1.2ms idle=207.3ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:01:51.543] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=3.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:01:51.544] [DEBUG] QUERY OK source="terminal_groups" db=0.7ms idle=1.5ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:01:51.546] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:01:51.549] [INFO ] Sent 200 in 13ms [2026-06-17 07:01:53.387] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 31µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "VDszPiQ5Lx5lcz4feHoOXQUuQwdrAXYedlYNFMCgRJRn23V8JItdRM1v", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:01:54.061] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:01:54.063] [DEBUG] QUERY OK source="users_tokens" db=1.2ms queue=0.1ms idle=999.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:01:54.061962Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:01:54.067] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=1145.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:01:54.069] [DEBUG] QUERY OK source="app_packages" db=1.3ms idle=335.9ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:01:54.070] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=2.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:01:54.072] [DEBUG] QUERY OK source="terminal_groups" db=1.9ms idle=1.1ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:01:54.072] [DEBUG] Replied in 11ms [2026-06-17 07:01:54.072] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:01:54.080] [DEBUG] QUERY OK source="tms_terminals" db=6.9ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:01:54.080] [DEBUG] Replied in 7ms [2026-06-17 07:01:57.972] [DEBUG] HANDLE EVENT "set_status_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"status" => "online", "value" => ""} [2026-06-17 07:01:57.982] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms queue=4.7ms idle=220.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:492 [2026-06-17 07:01:57.982] [DEBUG] Replied in 10ms [2026-06-17 07:02:10.371] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 07:02:10.372] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T07:01:20Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T07:01:20Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T07:01:20Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T07:01:20Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T07:01:20Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T07:01:20Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T07:01:20Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T07:01:20Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T07:01:20Z","vendor":"MoreFun"} [2026-06-17 07:02:10.373] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:01:20Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:01:20Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:01:20Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:01:20Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:01:20Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:01:20Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:01:20Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:01:20Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T07:01:20Z", "vendor" => "MoreFun"} [2026-06-17 07:02:10.373] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 07:02:10.384] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 07:02:10.388] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 07:02:10.397] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.8ms idle=1468.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-06-17 07:02:10.400] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=2.5ms idle=554.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 07:02:10.408] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=0.4ms idle=10.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-06-17 07:02:10.419] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.8ms idle=16.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-06-17 07:02:10.437] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=1.0ms idle=27.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 07:02:10.461] [DEBUG] QUERY OK source="pos_merchant" db=0.5ms queue=17.2ms idle=24.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 07:02:10.467] [DEBUG] QUERY OK db=0.7ms queue=0.6ms idle=536.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 ["372916040000000"] [2026-06-17 07:02:10.468] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 07:02:10.474] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms queue=0.7ms idle=35.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 07:02:10.474] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 07:02:10.486] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 07:02:10.541] [DEBUG] QUERY OK db=24.2ms queue=1.2ms idle=47.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9cd64bd459339d90a0de9001be959925ddb73cefd606b898ee1b28580f046b32", 5154, 865, ~U[2026-06-17 07:02:10Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 07:02:10], ~N[2026-06-17 07:02:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 07:02:10.542] [INFO ] AutoPushService: Created push log 29711 for MF919 params.zip [2026-06-17 07:02:10.546] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5154, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 07:02:10.546] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:02:10.552] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 07:02:10.566] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms queue=0.4ms idle=89.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-06-17 07:02:10.602] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 07:02:10.639] [DEBUG] QUERY OK db=29.7ms queue=5.6ms idle=68.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1cb4ca3a1de0ea58a9114fc23484c8db6b9756d1e3b3d75138d79780de824edf", 228, 17947, ~U[2026-06-17 07:02:10Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 07:02:10], ~N[2026-06-17 07:02:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 07:02:10.639] [INFO ] AutoPushService: Created push log 29712 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 07:02:10.639] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 228, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 07:02:10.639] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:02:10.646] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 07:02:10.653] [DEBUG] QUERY OK source="config_file_versions" db=2.5ms idle=84.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-06-17 07:02:10.674] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 07:02:10.677] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=0.1ms idle=35.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 07:02:10.677] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 07:02:10.863] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 07:02:10.864] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:02:10.864] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:02:10.867] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms idle=187.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-06-17 07:02:10.868] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 07:02:10.868] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 07:02:10.870] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=15.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:02:10.875] [INFO ] Terminal updated: 98251226730002 [2026-06-17 07:02:10.890] [DEBUG] QUERY OK source="tms_terminals" db=14.3ms queue=0.4ms idle=8.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 07:02:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:02:10.898] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.8ms idle=27.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-06-17 07:02:10.899] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=8.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-06-17 07:02:10.899] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 07:02:10.902] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 07:02:10.927] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:02:10.956] [DEBUG] QUERY OK db=18.0ms queue=0.3ms idle=35.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T07:01:20Z", ~N[2026-06-17 07:02:10], ~N[2026-06-17 07:02:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:02:10.970] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39109, oid: "organization_id", upload_time: "2026-06-17T07:01:20Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:10], updated_at: ~N[2026-06-17 07:02:10]} [2026-06-17 07:02:10.970] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:01:20Z", "value" => "online"} [2026-06-17 07:02:11.008] [DEBUG] QUERY OK db=35.2ms queue=2.7ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T07:01:20Z", "online", "status", 39109, ~N[2026-06-17 07:02:10], ~N[2026-06-17 07:02:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:11.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304015, itemkey: "status", value: "online", timestamp: "2026-06-17T07:01:20Z", message: "Terminal status update", status_log_id: 39109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:10], updated_at: ~N[2026-06-17 07:02:10]}} [2026-06-17 07:02:11.009] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 07:02:11.047] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms queue=2.6ms idle=53.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:11], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 07:02:11.047] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:01:20Z", "value" => "54"} [2026-06-17 07:02:11.047] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 2 terminals [2026-06-17 07:02:11.061] [DEBUG] QUERY OK db=12.9ms queue=0.3ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T07:01:20Z", "54", "battery", 39109, ~N[2026-06-17 07:02:11], ~N[2026-06-17 07:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:11.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304016, itemkey: "battery", value: "54", timestamp: "2026-06-17T07:01:20Z", message: "Battery level", status_log_id: 39109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:11], updated_at: ~N[2026-06-17 07:02:11]}} [2026-06-17 07:02:11.061] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:01:20Z", "value" => "online"} [2026-06-17 07:02:11.091] [DEBUG] QUERY OK db=29.0ms queue=0.4ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T07:01:20Z", "online", "network", 39109, ~N[2026-06-17 07:02:11], ~N[2026-06-17 07:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:11.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304017, itemkey: "network", value: "online", timestamp: "2026-06-17T07:01:20Z", message: "Network connectivity", status_log_id: 39109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:11], updated_at: ~N[2026-06-17 07:02:11]}} [2026-06-17 07:02:11.092] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 07:02:11.093] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=31.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:11], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 07:02:11.093] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:01:20Z", "value" => "0"} [2026-06-17 07:02:11.093] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 2 terminals [2026-06-17 07:02:11.126] [DEBUG] QUERY OK db=32.3ms 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-06-17T07:01:20Z", "0", "cpu", 39109, ~N[2026-06-17 07:02:11], ~N[2026-06-17 07:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:11.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304018, itemkey: "cpu", value: "0", timestamp: "2026-06-17T07:01:20Z", message: "CPU usage percentage", status_log_id: 39109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:11], updated_at: ~N[2026-06-17 07:02:11]}} [2026-06-17 07:02:11.127] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:01:20Z", "value" => "1.0.0"} [2026-06-17 07:02:11.143] [DEBUG] QUERY OK db=15.4ms queue=0.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T07:01:20Z", "1.0.0", "parameter_config", 39109, ~N[2026-06-17 07:02:11], ~N[2026-06-17 07:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:11.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304019, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T07:01:20Z", message: "Current parameters version", status_log_id: 39109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:11], updated_at: ~N[2026-06-17 07:02:11]}} [2026-06-17 07:02:11.144] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:01:20Z", "value" => "1.0.1"} [2026-06-17 07:02:11.161] [DEBUG] QUERY OK db=17.0ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T07:01:20Z", "1.0.1", "emv_config", 39109, ~N[2026-06-17 07:02:11], ~N[2026-06-17 07:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:11.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304020, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T07:01:20Z", message: "Current EMV config version", status_log_id: 39109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:11], updated_at: ~N[2026-06-17 07:02:11]}} [2026-06-17 07:02:11.162] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:01:20Z", "value" => ""} [2026-06-17 07:02:11.186] [DEBUG] QUERY OK db=23.2ms queue=0.5ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T07:01:20Z", "keys_config", 39109, ~N[2026-06-17 07:02:11], ~N[2026-06-17 07:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:11.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304021, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T07:01:20Z", message: "Current keys config version", status_log_id: 39109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:11], updated_at: ~N[2026-06-17 07:02:11]}} [2026-06-17 07:02:11.186] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:01:20Z", "value" => ""} [2026-06-17 07:02:11.226] [DEBUG] QUERY OK db=39.1ms queue=0.4ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T07:01:20Z", "application", 39109, ~N[2026-06-17 07:02:11], ~N[2026-06-17 07:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:11.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304022, itemkey: "application", value: nil, timestamp: "2026-06-17T07:01:20Z", message: "Current application version", status_log_id: 39109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:11], updated_at: ~N[2026-06-17 07:02:11]}} [2026-06-17 07:02:11.228] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=41.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 07:02:11.230] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:02:11.230] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 07:02:11]}] [2026-06-17 07:02:11.235] [WARN ] Unexpected async result [2026-06-17 07:02:11.235] [WARN ] Unexpected async result [2026-06-17 07:02:35.704] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 07:02:35.704] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T22:12:56Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T22:12:56Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T22:12:56Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T22:12:56Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T22:12:56Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T22:12:56Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T22:12:56Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T22:12:56Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T22:12:56Z","vendor":"MoreFun"} [2026-06-17 07:02:35.704] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:12:56Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:12:56Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:12:56Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:12:56Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:12:56Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:12:56Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:12:56Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:12:56Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T22:12:56Z", "vendor" => "MoreFun"} [2026-06-17 07:02:35.704] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 07:02:35.704] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 07:02:35.704] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 07:02:35.705] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=764.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-06-17 07:02:35.706] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=740.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 07:02:35.707] [DEBUG] QUERY OK source="parameter_template_values" db=0.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-06-17 07:02:35.708] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.5ms idle=1.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-06-17 07:02:35.709] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=2.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 07:02:35.750] [DEBUG] QUERY OK source="pos_merchant" db=39.8ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 07:02:35.751] [DEBUG] QUERY OK db=0.7ms queue=0.7ms idle=1805.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 ["419926360000000"] [2026-06-17 07:02:35.751] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 07:02:35.752] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=42.1ms 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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 07:02:35.752] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 07:02:35.753] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 07:02:35.778] [DEBUG] QUERY OK db=23.9ms idle=3.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "58d82e2b566ebecad9590c4701447517405ad412fc86e52674e040904166459a", 1731, 867, ~U[2026-06-17 07:02:35Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 07:02:35], ~N[2026-06-17 07:02:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 07:02:35.778] [INFO ] AutoPushService: Created push log 29713 for MF919 params.zip [2026-06-17 07:02:35.778] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1731, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 07:02:35.778] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 07:02:35.778] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 07:02:35.781] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms queue=0.2ms idle=26.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-06-17 07:02:35.783] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 07:02:35.797] [DEBUG] QUERY OK db=13.2ms idle=6.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3aaee9a74a86bf1f2c5677e56f784df78c169ad2e0223245a34833766b5b8d57", 1795, 17947, ~U[2026-06-17 07:02:35Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 07:02:35], ~N[2026-06-17 07:02:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 07:02:35.798] [INFO ] AutoPushService: Created push log 29714 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 07:02:35.798] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1795, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 07:02:35.798] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 07:02:35.798] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 07:02:35.799] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=17.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-06-17 07:02:35.800] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 07:02:35.801] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 07:02:35.801] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 07:02:35.807] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 07:02:35.807] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:02:35.807] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:02:35.809] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.1ms idle=8.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-06-17 07:02:35.810] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 07:02:35.810] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 07:02:35.812] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:02:35.812] [INFO ] Terminal updated: 98250623730001 [2026-06-17 07:02:35.837] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 07:02:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:02:35.840] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=24.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-06-17 07:02:35.841] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 07:02:35.842] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=0.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-06-17 07:02:35.842] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 07:02:35.843] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 07:02:35.867] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:02:35.884] [DEBUG] QUERY OK db=15.6ms queue=0.1ms idle=25.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-16T22:12:56Z", ~N[2026-06-17 07:02:35], ~N[2026-06-17 07:02:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:02:35.884] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39110, oid: "organization_id", upload_time: "2026-06-16T22:12:56Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:35], updated_at: ~N[2026-06-17 07:02:35]} [2026-06-17 07:02:35.885] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:12:56Z", "value" => "online"} [2026-06-17 07:02:35.912] [DEBUG] QUERY OK db=26.2ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-16T22:12:56Z", "online", "status", 39110, ~N[2026-06-17 07:02:35], ~N[2026-06-17 07:02:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:35.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304023, itemkey: "status", value: "online", timestamp: "2026-06-16T22:12:56Z", message: "Terminal status update", status_log_id: 39110, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:35], updated_at: ~N[2026-06-17 07:02:35]}} [2026-06-17 07:02:35.912] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 07:02:35.913] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=28.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:35], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 07:02:35.914] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 07:02:35.913] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:12:56Z", "value" => "24"} [2026-06-17 07:02:35.943] [DEBUG] QUERY OK db=28.6ms idle=2.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-16T22:12:56Z", "24", "battery", 39110, ~N[2026-06-17 07:02:35], ~N[2026-06-17 07:02:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:35.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304024, itemkey: "battery", value: "24", timestamp: "2026-06-16T22:12:56Z", message: "Battery level", status_log_id: 39110, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:35], updated_at: ~N[2026-06-17 07:02:35]}} [2026-06-17 07:02:35.944] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:12:56Z", "value" => "online"} [2026-06-17 07:02:35.969] [DEBUG] QUERY OK db=25.1ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-16T22:12:56Z", "online", "network", 39110, ~N[2026-06-17 07:02:35], ~N[2026-06-17 07:02:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:35.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304025, itemkey: "network", value: "online", timestamp: "2026-06-16T22:12:56Z", message: "Network connectivity", status_log_id: 39110, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:35], updated_at: ~N[2026-06-17 07:02:35]}} [2026-06-17 07:02:35.970] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 07:02:35.971] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:35], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 07:02:35.971] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 07:02:35.971] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:12:56Z", "value" => "0"} [2026-06-17 07:02:36.008] [DEBUG] QUERY OK db=35.2ms queue=1.0ms idle=2.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-16T22:12:56Z", "0", "cpu", 39110, ~N[2026-06-17 07:02:35], ~N[2026-06-17 07:02:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:36.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304026, itemkey: "cpu", value: "0", timestamp: "2026-06-16T22:12:56Z", message: "CPU usage percentage", status_log_id: 39110, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:35], updated_at: ~N[2026-06-17 07:02:35]}} [2026-06-17 07:02:36.009] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:12:56Z", "value" => "1.0.0"} [2026-06-17 07:02:36.040] [DEBUG] QUERY OK db=30.6ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-16T22:12:56Z", "1.0.0", "parameter_config", 39110, ~N[2026-06-17 07:02:36], ~N[2026-06-17 07:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:36.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304027, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-16T22:12:56Z", message: "Current parameters version", status_log_id: 39110, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:36], updated_at: ~N[2026-06-17 07:02:36]}} [2026-06-17 07:02:36.041] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:12:56Z", "value" => "1.0.1"} [2026-06-17 07:02:36.084] [DEBUG] QUERY OK db=43.2ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-16T22:12:56Z", "1.0.1", "emv_config", 39110, ~N[2026-06-17 07:02:36], ~N[2026-06-17 07:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:36.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304028, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-16T22:12:56Z", message: "Current EMV config version", status_log_id: 39110, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:36], updated_at: ~N[2026-06-17 07:02:36]}} [2026-06-17 07:02:36.084] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:12:56Z", "value" => ""} [2026-06-17 07:02:36.107] [DEBUG] QUERY OK db=22.0ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-16T22:12:56Z", "keys_config", 39110, ~N[2026-06-17 07:02:36], ~N[2026-06-17 07:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:36.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304029, itemkey: "keys_config", value: nil, timestamp: "2026-06-16T22:12:56Z", message: "Current keys config version", status_log_id: 39110, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:36], updated_at: ~N[2026-06-17 07:02:36]}} [2026-06-17 07:02:36.108] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:12:56Z", "value" => "3.8.5"} [2026-06-17 07:02:36.125] [DEBUG] QUERY OK db=16.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-06-16T22:12:56Z", "3.8.5", "application", 39110, ~N[2026-06-17 07:02:36], ~N[2026-06-17 07:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:36.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304030, itemkey: "application", value: "3.8.5", timestamp: "2026-06-16T22:12:56Z", message: "Current application version", status_log_id: 39110, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:36], updated_at: ~N[2026-06-17 07:02:36]}} [2026-06-17 07:02:36.137] [DEBUG] QUERY OK source="tms_terminals" db=11.0ms idle=18.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:36], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 07:02:36.137] [WARN ] Unexpected async result [2026-06-17 07:02:36.137] [WARN ] Unexpected async result [2026-06-17 07:02:36.138] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=12.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:02:36.138] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 07:02:11]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 07:02:36]}] [2026-06-17 07:02:55.611] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 07:02:55.611] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T22:13:16Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T22:13:16Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T22:13:16Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T22:13:16Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T22:13:16Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T22:13:16Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T22:13:16Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T22:13:16Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T22:13:16Z","vendor":"MoreFun"} [2026-06-17 07:02:55.611] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:13:16Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:13:16Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:13:16Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:13:16Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:13:16Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:13:16Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:13:16Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:13:16Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T22:13:16Z", "vendor" => "MoreFun"} [2026-06-17 07:02:55.611] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 07:02:55.612] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 07:02:55.612] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 07:02:55.613] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=1172.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-06-17 07:02:55.614] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=566.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 07:02:55.616] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms queue=0.1ms 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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 07:02:55.617] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.4ms idle=1.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-06-17 07:02:55.619] [DEBUG] QUERY OK source="pos_terminal" db=1.6ms idle=1.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 07:02:55.659] [DEBUG] QUERY OK source="pos_merchant" db=39.6ms idle=2.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 07:02:55.661] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=1715.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 ["419926360000000"] [2026-06-17 07:02:55.661] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 07:02:55.662] [DEBUG] QUERY OK source="pos_terminal_data" db=1.2ms queue=0.1ms idle=41.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 07:02:55.662] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 07:02:55.663] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 07:02:55.700] [DEBUG] QUERY OK db=35.2ms queue=0.5ms idle=4.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "36136d34d4ab816d24765f5ea06d9e7d9ba30a16b7ec9a72e4cbff165e4afcd9", 1923, 867, ~U[2026-06-17 07:02:55Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 07:02:55.700] [INFO ] AutoPushService: Created push log 29715 for MF919 params.zip [2026-06-17 07:02:55.700] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1923, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 07:02:55.700] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 07:02:55.700] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 07:02:55.705] [DEBUG] QUERY OK source="config_file_versions" db=4.4ms idle=38.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-06-17 07:02:55.715] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 07:02:55.740] [DEBUG] QUERY OK db=19.4ms queue=1.9ms idle=18.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d275b195849ea9d75130a16915fd5e8c1beba0494e4f74ef495e3c5099def5f9", 1987, 17947, ~U[2026-06-17 07:02:55Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 07:02:55.740] [INFO ] AutoPushService: Created push log 29716 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 07:02:55.740] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1987, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 07:02:55.740] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 07:02:55.740] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 07:02:55.741] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=35.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-06-17 07:02:55.741] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 07:02:55.744] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 07:02:55.744] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 07:02:55.747] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 07:02:55.747] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:02:55.748] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:02:55.750] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 07:02:55.750] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 07:02:55.750] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 07:02:55.755] [DEBUG] QUERY OK source="tms_terminals" db=4.4ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:02:55.756] [INFO ] Terminal updated: 98250623730001 [2026-06-17 07:02:55.770] [DEBUG] QUERY OK source="tms_terminals" db=14.3ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 07:02:55], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:02:55.772] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=15.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-06-17 07:02:55.776] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 07:02:55.779] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 07:02:55.779] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 07:02:55.783] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 07:02:55.810] [DEBUG] QUERY OK source="tms_terminals" db=25.6ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:02:55], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:02:55.839] [DEBUG] QUERY OK db=26.2ms queue=2.6ms idle=26.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-16T22:13:16Z", ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:02:55.839] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39111, oid: "organization_id", upload_time: "2026-06-16T22:13:16Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:55], updated_at: ~N[2026-06-17 07:02:55]} [2026-06-17 07:02:55.839] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:13:16Z", "value" => "online"} [2026-06-17 07:02:55.857] [DEBUG] QUERY OK db=17.4ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-16T22:13:16Z", "online", "status", 39111, ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:55.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304031, itemkey: "status", value: "online", timestamp: "2026-06-16T22:13:16Z", message: "Terminal status update", status_log_id: 39111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:55], updated_at: ~N[2026-06-17 07:02:55]}} [2026-06-17 07:02:55.858] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 07:02:55.858] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 07:02:55.859] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:13:16Z", "value" => "24"} [2026-06-17 07:02:55.880] [DEBUG] QUERY OK db=20.1ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-16T22:13:16Z", "24", "battery", 39111, ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:55.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304032, itemkey: "battery", value: "24", timestamp: "2026-06-16T22:13:16Z", message: "Battery level", status_log_id: 39111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:55], updated_at: ~N[2026-06-17 07:02:55]}} [2026-06-17 07:02:55.880] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:13:16Z", "value" => "online"} [2026-06-17 07:02:55.905] [DEBUG] QUERY OK db=24.2ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-16T22:13:16Z", "online", "network", 39111, ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:55.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304033, itemkey: "network", value: "online", timestamp: "2026-06-16T22:13:16Z", message: "Network connectivity", status_log_id: 39111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:55], updated_at: ~N[2026-06-17 07:02:55]}} [2026-06-17 07:02:55.905] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 07:02:55.905] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:13:16Z", "value" => "0"} [2026-06-17 07:02:55.906] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 2 terminals [2026-06-17 07:02:55.933] [DEBUG] QUERY OK db=27.7ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-16T22:13:16Z", "0", "cpu", 39111, ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:55.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304034, itemkey: "cpu", value: "0", timestamp: "2026-06-16T22:13:16Z", message: "CPU usage percentage", status_log_id: 39111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:55], updated_at: ~N[2026-06-17 07:02:55]}} [2026-06-17 07:02:55.934] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:13:16Z", "value" => "1.0.0"} [2026-06-17 07:02:55.955] [DEBUG] QUERY OK db=19.6ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-16T22:13:16Z", "1.0.0", "parameter_config", 39111, ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:55.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304035, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-16T22:13:16Z", message: "Current parameters version", status_log_id: 39111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:55], updated_at: ~N[2026-06-17 07:02:55]}} [2026-06-17 07:02:55.956] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:13:16Z", "value" => "1.0.1"} [2026-06-17 07:02:55.985] [DEBUG] QUERY OK db=27.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-16T22:13:16Z", "1.0.1", "emv_config", 39111, ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:55.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304036, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-16T22:13:16Z", message: "Current EMV config version", status_log_id: 39111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:55], updated_at: ~N[2026-06-17 07:02:55]}} [2026-06-17 07:02:55.986] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:13:16Z", "value" => ""} [2026-06-17 07:02:56.018] [DEBUG] QUERY OK db=31.8ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-16T22:13:16Z", "keys_config", 39111, ~N[2026-06-17 07:02:55], ~N[2026-06-17 07:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:56.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304037, itemkey: "keys_config", value: nil, timestamp: "2026-06-16T22:13:16Z", message: "Current keys config version", status_log_id: 39111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:55], updated_at: ~N[2026-06-17 07:02:55]}} [2026-06-17 07:02:56.018] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:13:16Z", "value" => "3.8.5"} [2026-06-17 07:02:56.046] [DEBUG] QUERY OK db=27.6ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-06-16T22:13:16Z", "3.8.5", "application", 39111, ~N[2026-06-17 07:02:56], ~N[2026-06-17 07:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:02:56.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304038, itemkey: "application", value: "3.8.5", timestamp: "2026-06-16T22:13:16Z", message: "Current application version", status_log_id: 39111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:02:56], updated_at: ~N[2026-06-17 07:02:56]}} [2026-06-17 07:02:56.047] [WARN ] Unexpected async result [2026-06-17 07:02:56.047] [WARN ] Unexpected async result [2026-06-17 07:02:56.048] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=29.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:02:56.048] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 07:02:11]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 07:02:55]}] [2026-06-17 07:03:15.466] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 56m, MIS in 23h 56m [2026-06-17 07:03:15.495] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 07:03:15.506] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 07:03:17.125] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 07:03:17.125] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 07:03:17.126] [INFO ] Building initial filter cache... [2026-06-17 07:03:17.147] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=4.6ms idle=260.5ms 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-06-17 07:03:17.157] [DEBUG] QUERY OK source="filter_usage" db=0.7ms queue=3.0ms idle=107.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-06-17 07:03:17.158] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 07:03:17.226] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 07:03:17.252] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 07:03:17.274] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 07:03:18.531] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 39µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "VDszPiQ5Lx5lcz4feHoOXQUuQwdrAXYedlYNFMCgRJRn23V8JItdRM1v", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:03:18.966] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:03:19.049] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=1.0ms idle=1992.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:03:19.015205Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:03:19.145] [DEBUG] QUERY OK source="tms_terminals" db=8.5ms queue=2.4ms 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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:03:19.204] [DEBUG] QUERY OK source="app_packages" db=1.6ms queue=3.3ms idle=142.1ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:03:19.275] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.5ms idle=132.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:03:19.294] [DEBUG] QUERY OK source="terminal_groups" db=2.2ms queue=3.4ms idle=84.4ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:03:19.294] [DEBUG] Replied in 346ms [2026-06-17 07:03:19.315] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:03:19.317] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.1ms idle=39.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:03:19.317] [DEBUG] Replied in 2ms [2026-06-17 07:03:30.692] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 07:03:30.692] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T07:02:40Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T07:02:40Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T07:02:40Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T07:02:40Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T07:02:40Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T07:02:40Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T07:02:40Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T07:02:40Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T07:02:40Z","vendor":"MoreFun"} [2026-06-17 07:03:30.693] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:02:40Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:02:40Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:02:40Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:02:40Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:02:40Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:02:40Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:02:40Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:02:40Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T07:02:40Z", "vendor" => "MoreFun"} [2026-06-17 07:03:30.693] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 07:03:30.703] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 07:03:30.703] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 07:03:30.711] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.8ms idle=724.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-06-17 07:03:30.713] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.0ms idle=604.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 07:03:30.718] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=0.7ms 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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 07:03:30.726] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.7ms idle=11.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-06-17 07:03:30.733] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms queue=0.5ms idle=13.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 07:03:30.768] [DEBUG] QUERY OK source="pos_merchant" db=0.4ms queue=32.2ms idle=8.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 07:03:30.774] [DEBUG] QUERY OK db=1.1ms queue=0.4ms idle=1899.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 ["372916040000000"] [2026-06-17 07:03:30.774] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 07:03:30.777] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms queue=0.3ms idle=43.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 07:03:30.777] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 07:03:30.783] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 07:03:30.813] [DEBUG] QUERY OK db=11.6ms queue=0.6ms idle=28.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4dfa95d1428670b5a9da6ee8f9c0a578cc65404ef3978375e6be0bf57779e877", 5314, 865, ~U[2026-06-17 07:03:30Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 07:03:30], ~N[2026-06-17 07:03:30]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 07:03:30.813] [INFO ] AutoPushService: Created push log 29717 for MF919 params.zip [2026-06-17 07:03:30.818] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5314, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 07:03:30.818] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:03:30.821] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 07:03:30.830] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.7ms idle=51.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-06-17 07:03:30.839] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 07:03:30.873] [DEBUG] QUERY OK db=31.7ms queue=0.5ms idle=31.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "37dc75e30cae88ad3fc3ad2fddfbe3058ddfca1718042124ff88e1aa3b4cafa2", 1155, 17947, ~U[2026-06-17 07:03:30Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 07:03:30], ~N[2026-06-17 07:03:30]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 07:03:30.873] [INFO ] AutoPushService: Created push log 29718 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 07:03:30.873] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1155, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 07:03:30.873] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:03:30.874] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 07:03:30.876] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=45.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-06-17 07:03:30.881] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 07:03:30.882] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=9.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 07:03:30.883] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 07:03:30.934] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 07:03:30.934] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:03:30.934] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:03:30.935] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=58.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-06-17 07:03:30.936] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 07:03:30.936] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 07:03:30.937] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=53.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:03:30.940] [INFO ] Terminal updated: 98251226730002 [2026-06-17 07:03:30.952] [DEBUG] QUERY OK source="tms_terminals" db=10.8ms queue=0.3ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 07:03:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:03:30.958] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.8ms idle=19.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-06-17 07:03:30.959] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=6.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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 07:03:30.959] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 07:03:30.960] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 07:03:30.973] [DEBUG] QUERY OK source="tms_terminals" db=12.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:03:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:03:31.008] [DEBUG] QUERY OK db=24.9ms queue=0.9ms idle=21.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T07:02:40Z", ~N[2026-06-17 07:03:30], ~N[2026-06-17 07:03:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:03:31.013] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39112, oid: "organization_id", upload_time: "2026-06-17T07:02:40Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:30], updated_at: ~N[2026-06-17 07:03:30]} [2026-06-17 07:03:31.013] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:02:40Z", "value" => "online"} [2026-06-17 07:03:31.039] [DEBUG] QUERY OK db=24.0ms queue=0.6ms 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-06-17T07:02:40Z", "online", "status", 39112, ~N[2026-06-17 07:03:31], ~N[2026-06-17 07:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:03:31.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304039, itemkey: "status", value: "online", timestamp: "2026-06-17T07:02:40Z", message: "Terminal status update", status_log_id: 39112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:31], updated_at: ~N[2026-06-17 07:03:31]}} [2026-06-17 07:03:31.039] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 07:03:31.039] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:02:40Z", "value" => "54"} [2026-06-17 07:03:31.040] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:03:31.056] [DEBUG] QUERY OK db=15.1ms queue=0.6ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T07:02:40Z", "54", "battery", 39112, ~N[2026-06-17 07:03:31], ~N[2026-06-17 07:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:03:31.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304040, itemkey: "battery", value: "54", timestamp: "2026-06-17T07:02:40Z", message: "Battery level", status_log_id: 39112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:31], updated_at: ~N[2026-06-17 07:03:31]}} [2026-06-17 07:03:31.057] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:02:40Z", "value" => "online"} [2026-06-17 07:03:31.083] [DEBUG] QUERY OK db=25.6ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T07:02:40Z", "online", "network", 39112, ~N[2026-06-17 07:03:31], ~N[2026-06-17 07:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:03:31.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304041, itemkey: "network", value: "online", timestamp: "2026-06-17T07:02:40Z", message: "Network connectivity", status_log_id: 39112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:31], updated_at: ~N[2026-06-17 07:03:31]}} [2026-06-17 07:03:31.083] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 07:03:31.083] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:03:31.083] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:02:40Z", "value" => "0"} [2026-06-17 07:03:31.107] [DEBUG] QUERY OK db=23.3ms queue=0.1ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T07:02:40Z", "0", "cpu", 39112, ~N[2026-06-17 07:03:31], ~N[2026-06-17 07:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:03:31.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304042, itemkey: "cpu", value: "0", timestamp: "2026-06-17T07:02:40Z", message: "CPU usage percentage", status_log_id: 39112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:31], updated_at: ~N[2026-06-17 07:03:31]}} [2026-06-17 07:03:31.108] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:02:40Z", "value" => "1.0.0"} [2026-06-17 07:03:31.136] [DEBUG] QUERY OK db=27.2ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T07:02:40Z", "1.0.0", "parameter_config", 39112, ~N[2026-06-17 07:03:31], ~N[2026-06-17 07:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:03:31.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304043, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T07:02:40Z", message: "Current parameters version", status_log_id: 39112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:31], updated_at: ~N[2026-06-17 07:03:31]}} [2026-06-17 07:03:31.136] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:02:40Z", "value" => "1.0.1"} [2026-06-17 07:03:31.150] [DEBUG] QUERY OK db=12.8ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T07:02:40Z", "1.0.1", "emv_config", 39112, ~N[2026-06-17 07:03:31], ~N[2026-06-17 07:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:03:31.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304044, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T07:02:40Z", message: "Current EMV config version", status_log_id: 39112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:31], updated_at: ~N[2026-06-17 07:03:31]}} [2026-06-17 07:03:31.152] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:02:40Z", "value" => ""} [2026-06-17 07:03:31.175] [DEBUG] QUERY OK db=21.7ms queue=1.1ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T07:02:40Z", "keys_config", 39112, ~N[2026-06-17 07:03:31], ~N[2026-06-17 07:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:03:31.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304045, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T07:02:40Z", message: "Current keys config version", status_log_id: 39112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:31], updated_at: ~N[2026-06-17 07:03:31]}} [2026-06-17 07:03:31.176] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:02:40Z", "value" => ""} [2026-06-17 07:03:31.212] [DEBUG] QUERY OK db=34.1ms queue=2.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T07:02:40Z", "application", 39112, ~N[2026-06-17 07:03:31], ~N[2026-06-17 07:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:03:31.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304046, itemkey: "application", value: nil, timestamp: "2026-06-17T07:02:40Z", message: "Current application version", status_log_id: 39112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:03:31], updated_at: ~N[2026-06-17 07:03:31]}} [2026-06-17 07:03:31.217] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=0.2ms idle=39.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:03:31.220] [WARN ] Unexpected async result [2026-06-17 07:03:31.220] [WARN ] Unexpected async result [2026-06-17 07:03:31.220] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 07:05:20.090] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 07:05:20.090] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T22:15:40Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T22:15:40Z","value":"22"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T22:15:40Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T22:15:40Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T22:15:40Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T22:15:40Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T22:15:40Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T22:15:40Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T22:15:40Z","vendor":"MoreFun"} [2026-06-17 07:05:20.090] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:15:40Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:15:40Z", "value" => "22"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:15:40Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:15:40Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:15:40Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:15:40Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:15:40Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:15:40Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T22:15:40Z", "vendor" => "MoreFun"} [2026-06-17 07:05:20.090] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 07:05:20.090] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 07:05:20.091] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 07:05:20.094] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=1193.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-06-17 07:05:20.095] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=526.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 07:05:20.096] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms 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-06-17 07:05:20.101] [DEBUG] QUERY OK source="parameter_definitions" db=2.2ms queue=1.2ms idle=1.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-06-17 07:05:20.102] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=5.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 07:05:20.140] [DEBUG] QUERY OK source="pos_merchant" db=37.5ms queue=0.1ms idle=2.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 07:05:20.142] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=1243.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 ["419926360000000"] [2026-06-17 07:05:20.142] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 07:05:20.143] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=40.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 07:05:20.144] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 07:05:20.145] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 07:05:20.182] [DEBUG] QUERY OK db=35.7ms idle=5.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4c961f4e9ab20536c246e487a72400a005f8153a4de571a8f2bb11fc6836033d", 1219, 867, ~U[2026-06-17 07:05:20Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 07:05:20.182] [INFO ] AutoPushService: Created push log 29719 for MF919 params.zip [2026-06-17 07:05:20.182] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1219, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 07:05:20.182] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 07:05:20.184] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 07:05:20.186] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=41.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.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 07:05:20.191] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 07:05:20.220] [DEBUG] QUERY OK db=27.5ms idle=10.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "10b7471a59584ee54ce4cdd8b7bcdab788a38887debfb26b558a26e2d679a5a0", 5794, 17947, ~U[2026-06-17 07:05:20Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 07:05:20.220] [INFO ] AutoPushService: Created push log 29720 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 07:05:20.220] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 5794, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 07:05:20.220] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 07:05:20.220] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 07:05:20.223] [DEBUG] QUERY OK source="config_file_versions" db=2.5ms idle=34.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-06-17 07:05:20.223] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 07:05:20.225] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 07:05:20.225] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 07:05:20.227] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 07:05:20.227] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:05:20.227] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:05:20.231] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms 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-06-17 07:05:20.231] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 07:05:20.231] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 07:05:20.233] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:05:20.234] [INFO ] Terminal updated: 98250623730001 [2026-06-17 07:05:20.248] [DEBUG] QUERY OK source="tms_terminals" db=13.6ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 07:05:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:05:20.249] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=15.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-06-17 07:05:20.249] [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", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 07:05:20.251] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms 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-06-17 07:05:20.251] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 07:05:20.252] [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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 07:05:20.280] [DEBUG] QUERY OK source="tms_terminals" db=26.6ms queue=0.5ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:05:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:05:20.314] [DEBUG] QUERY OK db=33.0ms queue=1.1ms idle=27.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-16T22:15:40Z", ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:05:20.315] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39113, oid: "organization_id", upload_time: "2026-06-16T22:15:40Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]} [2026-06-17 07:05:20.315] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T22:15:40Z", "value" => "online"} [2026-06-17 07:05:20.327] [DEBUG] QUERY OK db=11.9ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-16T22:15:40Z", "online", "status", 39113, ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:20.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304047, itemkey: "status", value: "online", timestamp: "2026-06-16T22:15:40Z", message: "Terminal status update", status_log_id: 39113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]}} [2026-06-17 07:05:20.328] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 07:05:20.329] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T22:15:40Z", "value" => "22"} [2026-06-17 07:05:20.329] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:05:20.345] [DEBUG] QUERY OK db=15.7ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-16T22:15:40Z", "22", "battery", 39113, ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:20.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304048, itemkey: "battery", value: "22", timestamp: "2026-06-16T22:15:40Z", message: "Battery level", status_log_id: 39113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]}} [2026-06-17 07:05:20.346] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T22:15:40Z", "value" => "online"} [2026-06-17 07:05:20.375] [DEBUG] QUERY OK db=28.5ms queue=0.1ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-16T22:15:40Z", "online", "network", 39113, ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:20.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304049, itemkey: "network", value: "online", timestamp: "2026-06-16T22:15:40Z", message: "Network connectivity", status_log_id: 39113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]}} [2026-06-17 07:05:20.375] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 07:05:20.375] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T22:15:40Z", "value" => "0"} [2026-06-17 07:05:20.375] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:05:20.398] [DEBUG] QUERY OK db=21.8ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-16T22:15:40Z", "0", "cpu", 39113, ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:20.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304050, itemkey: "cpu", value: "0", timestamp: "2026-06-16T22:15:40Z", message: "CPU usage percentage", status_log_id: 39113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]}} [2026-06-17 07:05:20.398] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T22:15:40Z", "value" => "1.0.0"} [2026-06-17 07:05:20.415] [DEBUG] QUERY OK db=16.8ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-16T22:15:40Z", "1.0.0", "parameter_config", 39113, ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:20.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304051, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-16T22:15:40Z", message: "Current parameters version", status_log_id: 39113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]}} [2026-06-17 07:05:20.416] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T22:15:40Z", "value" => "1.0.1"} [2026-06-17 07:05:20.427] [DEBUG] QUERY OK db=10.8ms queue=0.1ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-16T22:15:40Z", "1.0.1", "emv_config", 39113, ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:20.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304052, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-16T22:15:40Z", message: "Current EMV config version", status_log_id: 39113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]}} [2026-06-17 07:05:20.428] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T22:15:40Z", "value" => ""} [2026-06-17 07:05:20.442] [DEBUG] QUERY OK db=13.6ms queue=0.3ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-16T22:15:40Z", "keys_config", 39113, ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:20.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304053, itemkey: "keys_config", value: nil, timestamp: "2026-06-16T22:15:40Z", message: "Current keys config version", status_log_id: 39113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]}} [2026-06-17 07:05:20.443] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T22:15:40Z", "value" => "3.8.5"} [2026-06-17 07:05:20.466] [DEBUG] QUERY OK db=23.0ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-06-16T22:15:40Z", "3.8.5", "application", 39113, ~N[2026-06-17 07:05:20], ~N[2026-06-17 07:05:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:20.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304054, itemkey: "application", value: "3.8.5", timestamp: "2026-06-16T22:15:40Z", message: "Current application version", status_log_id: 39113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:20], updated_at: ~N[2026-06-17 07:05:20]}} [2026-06-17 07:05:20.466] [WARN ] Unexpected async result [2026-06-17 07:05:20.466] [WARN ] Unexpected async result [2026-06-17 07:05:20.467] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=24.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:05:20.473] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 07:05:31.698] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 07:05:31.699] [INFO ] Incoming JSON payload: {"oid":"260300d7-00d3-42bc-b850-a35fc7a649b4","sn":"98251226730001","uploadTime":"2026-06-17T15:08:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T15:08:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T15:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 07:05:31.700] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "260300d7-00d3-42bc-b850-a35fc7a649b4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T15:08:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T15:08:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T15:08:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T15:08:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T15:08:44Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T15:08:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T15:08:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T15:08:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T15:08:44Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T15:08:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T15:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T15:08:44Z", "vendor" => "morefun"} [2026-06-17 07:05:31.700] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 07:05:31.700] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 07:05:31.701] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 07:05:31.703] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=1095.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-06-17 07:05:31.705] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=1.1ms idle=93.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-06-17 07:05:31.705] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 07:05:31.706] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.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:98 [2026-06-17 07:05:31.706] [INFO ] Terminal updated: 98251226730001 [2026-06-17 07:05:31.727] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 07:05:31], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:05:31.727] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 07:05:31.728] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=21.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:629 [2026-06-17 07:05:31.763] [DEBUG] QUERY OK source="tms_terminals" db=34.4ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:05:31], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:05:31.787] [DEBUG] QUERY OK db=23.7ms idle=35.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "260300d7-00d3-42bc-b850-a35fc7a649b4", "2026-06-17T15:08:44Z", ~N[2026-06-17 07:05:31], ~N[2026-06-17 07:05:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:05:31.787] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39114, oid: "260300d7-00d3-42bc-b850-a35fc7a649b4", upload_time: "2026-06-17T15:08:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:31], updated_at: ~N[2026-06-17 07:05:31]} [2026-06-17 07:05:31.787] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T15:08:44Z", "value" => "morefun"} [2026-06-17 07:05:31.849] [DEBUG] QUERY OK db=19.9ms queue=41.3ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "morefun", "vendor", 39114, ~N[2026-06-17 07:05:31], ~N[2026-06-17 07:05:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:31.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304055, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:31], updated_at: ~N[2026-06-17 07:05:31]}} [2026-06-17 07:05:31.850] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T15:08:44Z", "value" => "kiosk_launcher"} [2026-06-17 07:05:31.910] [DEBUG] QUERY OK db=17.4ms queue=42.2ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "kiosk_launcher", "model", 39114, ~N[2026-06-17 07:05:31], ~N[2026-06-17 07:05:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:31.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304056, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:31], updated_at: ~N[2026-06-17 07:05:31]}} [2026-06-17 07:05:31.910] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T15:08:44Z", "value" => "1.0"} [2026-06-17 07:05:31.922] [DEBUG] QUERY OK db=11.5ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "1.0", "app_version", 39114, ~N[2026-06-17 07:05:31], ~N[2026-06-17 07:05:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:31.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304057, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:31], updated_at: ~N[2026-06-17 07:05:31]}} [2026-06-17 07:05:31.923] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T15:08:44Z", "value" => "13"} [2026-06-17 07:05:31.944] [DEBUG] QUERY OK db=20.7ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "13", "android_version", 39114, ~N[2026-06-17 07:05:31], ~N[2026-06-17 07:05:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:31.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304058, itemkey: "android_version", value: "13", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:31], updated_at: ~N[2026-06-17 07:05:31]}} [2026-06-17 07:05:31.944] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T15:08:44Z", "value" => "921"} [2026-06-17 07:05:31.976] [DEBUG] QUERY OK db=31.1ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "921", "ram_free_mb", 39114, ~N[2026-06-17 07:05:31], ~N[2026-06-17 07:05:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:31.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304059, itemkey: "ram_free_mb", value: "921", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:31], updated_at: ~N[2026-06-17 07:05:31]}} [2026-06-17 07:05:31.977] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T15:08:44Z", "value" => "WIFI"} [2026-06-17 07:05:32.001] [DEBUG] QUERY OK db=23.9ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "WIFI", "network_type", 39114, ~N[2026-06-17 07:05:31], ~N[2026-06-17 07:05:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304060, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:31], updated_at: ~N[2026-06-17 07:05:31]}} [2026-06-17 07:05:32.002] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T15:08:44Z", "value" => "true"} [2026-06-17 07:05:32.030] [DEBUG] QUERY OK db=27.8ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "true", "kiosk_active", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304061, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.030] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T15:08:44Z", "value" => ""} [2026-06-17 07:05:32.099] [DEBUG] QUERY OK db=68.3ms queue=0.3ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T15:08:44Z", "sim_operator", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304062, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.101] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"} [2026-06-17 07:05:32.181] [DEBUG] QUERY OK db=78.0ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "UNKNOWN", "sim_number", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304063, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.181] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"} [2026-06-17 07:05:32.230] [DEBUG] QUERY OK db=48.8ms idle=81.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "UNKNOWN", "sim_iccid", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304064, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.231] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"} [2026-06-17 07:05:32.248] [DEBUG] QUERY OK db=16.7ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "UNKNOWN", "sim_imsi", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304065, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.250] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"} [2026-06-17 07:05:32.268] [DEBUG] QUERY OK db=14.0ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "UNKNOWN", "sim_iccid2", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304066, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.269] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T15:08:44Z", "value" => "UNKNOWN"} [2026-06-17 07:05:32.306] [DEBUG] QUERY OK db=36.7ms queue=0.2ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "UNKNOWN", "sim_imsi2", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304067, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.306] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T15:08:44Z", "value" => "5"} [2026-06-17 07:05:32.330] [DEBUG] QUERY OK db=23.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "5", "data_usage_mb", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304068, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.331] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T15:08:44Z", "value" => "0"} [2026-06-17 07:05:32.342] [DEBUG] QUERY OK db=11.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "0", "mobile_data_mb", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304069, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.343] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T15:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 07:05:32.359] [DEBUG] QUERY OK db=14.8ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39114, ~N[2026-06-17 07:05:32], ~N[2026-06-17 07:05:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:05:32.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304070, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:05:32], updated_at: ~N[2026-06-17 07:05:32]}} [2026-06-17 07:05:32.361] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=17.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:05:32.364] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 07:06:09.856] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 07:06:09.856] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T07:05:19Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T07:05:19Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T07:05:19Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T07:05:19Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T07:05:19Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T07:05:19Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T07:05:19Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T07:05:19Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T07:05:19Z","vendor":"MoreFun"} [2026-06-17 07:06:09.858] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:05:19Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:05:19Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:05:19Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:05:19Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:05:19Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:05:19Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:05:19Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:05:19Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T07:05:19Z", "vendor" => "MoreFun"} [2026-06-17 07:06:09.858] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 07:06:09.859] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 07:06:09.859] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 07:06:09.861] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=1036.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-06-17 07:06:09.872] [DEBUG] QUERY OK source="tms_terminals" db=10.8ms idle=36.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 07:06:09.875] [DEBUG] QUERY OK source="parameter_template_values" db=1.5ms idle=12.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-06-17 07:06:09.883] [DEBUG] QUERY OK source="parameter_definitions" db=3.2ms queue=3.7ms idle=3.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-06-17 07:06:09.890] [DEBUG] QUERY OK source="pos_terminal" db=3.2ms idle=11.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 07:06:09.922] [DEBUG] QUERY OK source="pos_merchant" db=31.3ms queue=0.1ms idle=8.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 07:06:09.927] [DEBUG] QUERY OK db=1.0ms queue=3.7ms idle=12.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 ["372916040000000"] [2026-06-17 07:06:09.927] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 07:06:09.932] [DEBUG] QUERY OK source="pos_terminal_data" db=4.6ms idle=37.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 07:06:09.932] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 07:06:09.938] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 07:06:09.955] [DEBUG] QUERY OK db=13.4ms idle=19.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b7feb400fec2c80536f9f3afdfca95221f996c1cd9f2f3925781de43053c11da", 5922, 865, ~U[2026-06-17 07:06:09Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 07:06:09], ~N[2026-06-17 07:06:09]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 07:06:09.955] [INFO ] AutoPushService: Created push log 29721 for MF919 params.zip [2026-06-17 07:06:09.955] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5922, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 07:06:09.955] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:06:09.956] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 07:06:09.969] [DEBUG] QUERY OK source="config_file_versions" db=12.9ms idle=23.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-06-17 07:06:09.985] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 07:06:09.999] [DEBUG] QUERY OK db=12.7ms idle=31.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2b5426a0ccf034b141d25d8f07b1839e161395f2820625dfbcf672b20f78c5de", 1283, 17947, ~U[2026-06-17 07:06:09Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 07:06:09], ~N[2026-06-17 07:06:09]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 07:06:09.999] [INFO ] AutoPushService: Created push log 29722 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 07:06:09.999] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1283, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 07:06:09.999] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:06:09.999] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 07:06:10.009] [DEBUG] QUERY OK source="config_file_versions" db=8.8ms idle=30.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-06-17 07:06:10.009] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 07:06:10.017] [DEBUG] QUERY OK source="tms_terminals" db=7.4ms idle=10.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 07:06:10.017] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 07:06:10.024] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 07:06:10.024] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:06:10.025] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:06:10.026] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=16.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-06-17 07:06:10.028] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 07:06:10.028] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 07:06:10.032] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms queue=0.4ms idle=11.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:06:10.037] [INFO ] Terminal updated: 98251226730002 [2026-06-17 07:06:10.098] [DEBUG] QUERY OK source="tms_terminals" db=18.7ms queue=41.9ms idle=11.5ms UPDATE `tms_terminals` SET `status` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", nil, nil, ~N[2026-06-17 07:06:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:06:10.098] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 07:06:10.099] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=66.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 07:06:10.154] [DEBUG] QUERY OK source="tms_terminals" db=13.4ms queue=41.0ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:06:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:06:10.172] [DEBUG] QUERY OK db=17.8ms idle=55.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T07:05:19Z", ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:06:10.172] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39115, oid: "organization_id", upload_time: "2026-06-17T07:05:19Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]} [2026-06-17 07:06:10.173] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:05:19Z", "value" => "online"} [2026-06-17 07:06:10.196] [DEBUG] QUERY OK db=20.6ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T07:05:19Z", "online", "status", 39115, ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:06:10.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304071, itemkey: "status", value: "online", timestamp: "2026-06-17T07:05:19Z", message: "Terminal status update", status_log_id: 39115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]}} [2026-06-17 07:06:10.196] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 07:06:10.196] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:06:10.196] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:05:19Z", "value" => "54"} [2026-06-17 07:06:10.216] [DEBUG] QUERY OK db=19.3ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T07:05:19Z", "54", "battery", 39115, ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:06:10.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304072, itemkey: "battery", value: "54", timestamp: "2026-06-17T07:05:19Z", message: "Battery level", status_log_id: 39115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]}} [2026-06-17 07:06:10.217] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:05:19Z", "value" => "online"} [2026-06-17 07:06:10.232] [DEBUG] QUERY OK db=14.6ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T07:05:19Z", "online", "network", 39115, ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:06:10.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304073, itemkey: "network", value: "online", timestamp: "2026-06-17T07:05:19Z", message: "Network connectivity", status_log_id: 39115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]}} [2026-06-17 07:06:10.232] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 07:06:10.232] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:05:19Z", "value" => "0"} [2026-06-17 07:06:10.232] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:06:10.250] [DEBUG] QUERY OK db=17.1ms queue=0.2ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T07:05:19Z", "0", "cpu", 39115, ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:06:10.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304074, itemkey: "cpu", value: "0", timestamp: "2026-06-17T07:05:19Z", message: "CPU usage percentage", status_log_id: 39115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]}} [2026-06-17 07:06:10.251] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:05:19Z", "value" => ""} [2026-06-17 07:06:10.305] [DEBUG] QUERY OK db=12.0ms queue=41.5ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T07:05:19Z", "parameter_config", 39115, ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:06:10.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304075, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T07:05:19Z", message: "Current parameters version", status_log_id: 39115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]}} [2026-06-17 07:06:10.306] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:05:19Z", "value" => ""} [2026-06-17 07:06:10.362] [DEBUG] QUERY OK db=11.9ms queue=44.5ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T07:05:19Z", "emv_config", 39115, ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:06:10.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304076, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T07:05:19Z", message: "Current EMV config version", status_log_id: 39115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]}} [2026-06-17 07:06:10.363] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:05:19Z", "value" => ""} [2026-06-17 07:06:10.380] [DEBUG] QUERY OK db=17.0ms queue=0.1ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T07:05:19Z", "keys_config", 39115, ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:06:10.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304077, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T07:05:19Z", message: "Current keys config version", status_log_id: 39115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]}} [2026-06-17 07:06:10.382] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:05:19Z", "value" => ""} [2026-06-17 07:06:10.399] [DEBUG] QUERY OK db=15.6ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T07:05:19Z", "application", 39115, ~N[2026-06-17 07:06:10], ~N[2026-06-17 07:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:06:10.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304078, itemkey: "application", value: nil, timestamp: "2026-06-17T07:05:19Z", message: "Current application version", status_log_id: 39115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:06:10], updated_at: ~N[2026-06-17 07:06:10]}} [2026-06-17 07:06:10.405] [WARN ] Unexpected async result [2026-06-17 07:06:10.405] [WARN ] Unexpected async result [2026-06-17 07:06:10.406] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms queue=0.1ms idle=22.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:06:10.444] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 07:13:03.229] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 46m, MIS in 23h 46m [2026-06-17 07:13:03.321] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 07:13:03.391] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 07:13:05.679] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 07:13:05.679] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 07:13:05.679] [INFO ] Building initial filter cache... [2026-06-17 07:13:05.696] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=1.7ms idle=1231.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-06-17 07:13:05.704] [DEBUG] QUERY OK source="filter_usage" db=0.9ms queue=0.9ms idle=239.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-06-17 07:13:05.704] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 07:13:05.884] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 07:13:05.944] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 07:13:05.966] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 07:13:10.460] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 39µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "VDszPiQ5Lx5lcz4feHoOXQUuQwdrAXYedlYNFMCgRJRn23V8JItdRM1v", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "1", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:13:11.061] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:13:11.121] [DEBUG] QUERY OK source="users_tokens" db=1.3ms queue=0.7ms idle=1516.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:13:11.099246Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:13:11.157] [DEBUG] QUERY OK source="tms_terminals" db=4.0ms queue=0.9ms idle=668.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:13:11.173] [DEBUG] QUERY OK source="app_packages" db=0.4ms queue=0.6ms idle=61.2ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:13:11.208] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.4ms idle=50.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:13:11.226] [DEBUG] QUERY OK source="terminal_groups" db=4.4ms queue=0.7ms idle=48.2ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:13:11.226] [DEBUG] Replied in 178ms [2026-06-17 07:13:11.243] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:13:11.245] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=35.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:13:11.246] [DEBUG] Replied in 2ms [2026-06-17 07:13:16.432] [INFO ] GET /terminals [2026-06-17 07:13:16.455] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 07:13:16.465] [DEBUG] QUERY OK source="users_tokens" db=0.7ms idle=1868.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:13:16.464627Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 07:13:16.473] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1360.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:13:16.474] [DEBUG] QUERY OK source="app_packages" db=0.5ms idle=977.0ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:13:16.474] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:13:16.476] [DEBUG] QUERY OK source="terminal_groups" db=1.3ms idle=0.8ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:13:16.479] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:13:16.489] [INFO ] Sent 200 in 56ms [2026-06-17 07:13:22.765] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 32µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fycmQlQ2QQtcYDocGREIUSA4WgBQNCQHOpL26B-rkYVmSXP4o_mcixco", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:13:22.918] [INFO ] GET /images/favicon.png [2026-06-17 07:13:22.964] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/Shamanth/prverification/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/Shamanth/prverification/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-06-17 07:13:23.264] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:13:23.267] [DEBUG] QUERY OK source="users_tokens" db=2.0ms idle=1669.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:13:23.265273Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:13:23.268] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1156.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:13:23.271] [DEBUG] QUERY OK source="app_packages" db=0.4ms queue=0.1ms idle=748.9ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:13:23.272] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:13:23.273] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:13:23.273] [DEBUG] Replied in 9ms [2026-06-17 07:13:23.273] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:13:23.275] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:13:23.277] [DEBUG] Replied in 3ms [2026-06-17 07:13:35.107] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "98251226730002"} [2026-06-17 07:13:35.128] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.8ms queue=0.6ms idle=998.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 07:13:35.400] [DEBUG] QUERY OK source="tms_terminal_status_items" db=252.8ms queue=4.3ms idle=594.3ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39115, 39112, 39109, 39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, ...] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 07:13:35.581] [DEBUG] Replied in 473ms [2026-06-17 07:13:35.600] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "98251226730002"} [2026-06-17 07:13:35.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.2ms queue=0.1ms idle=200.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 07:13:35.980] [DEBUG] QUERY OK source="tms_terminal_status_items" db=334.5ms queue=11.1ms idle=83.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39115, 39112, 39109, 39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, ...] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 07:13:36.236] [DEBUG] Replied in 636ms [2026-06-17 07:13:39.113] [DEBUG] HANDLE EVENT "set_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"tab" => "history", "value" => ""} [2026-06-17 07:13:39.113] [DEBUG] Replied in 222µs [2026-06-17 07:13:41.091] [DEBUG] HANDLE EVENT "set_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"tab" => "location", "value" => ""} [2026-06-17 07:13:41.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=0.5ms idle=1532.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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:483 [2026-06-17 07:13:41.099] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms queue=0.5ms idle=536.2ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` = ?) ORDER BY t0.`status_log_id` [39115] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:483 [2026-06-17 07:13:41.099] [DEBUG] Replied in 7ms [2026-06-17 07:13:43.167] [DEBUG] HANDLE EVENT "set_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"tab" => "apk", "value" => ""} [2026-06-17 07:13:43.168] [DEBUG] Replied in 202µs [2026-06-17 07:13:46.798] [DEBUG] HANDLE EVENT "set_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"tab" => "file_download", "value" => ""} [2026-06-17 07:13:46.798] [DEBUG] Replied in 208µs [2026-06-17 07:13:49.654] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{"value" => ""} [2026-06-17 07:13:49.654] [DEBUG] Replied in 208µs [2026-06-17 07:13:49.654] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:13:49.656] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=540.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:13:49.657] [DEBUG] Replied in 2ms [2026-06-17 07:13:50.151] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:13:50.151] [DEBUG] Replied in 163µs [2026-06-17 07:13:50.152] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:13:50.154] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=567.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:13:50.155] [DEBUG] Replied in 3ms [2026-06-17 07:13:52.421] [INFO ] Device phoenix_client_shamanth disconnected [2026-06-17 07:13:52.424] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 07:13:53.367] [DEBUG] HANDLE EVENT "set_status_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"status" => "online", "value" => ""} [2026-06-17 07:13:53.368] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms idle=1253.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:492 [2026-06-17 07:13:53.369] [DEBUG] Replied in 1ms [2026-06-17 07:14:08.004] [DEBUG] HANDLE EVENT "show_terminal_details" in PlatformWeb.TerminalLive.Index Parameters: %{"serial_number" => "98251226730002"} [2026-06-17 07:14:08.012] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms idle=1362.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` = ?) [13] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 07:14:08.197] [DEBUG] QUERY OK source="tms_terminal_status_items" db=169.5ms queue=4.8ms idle=378.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) ORDER BY t0.`status_log_id` [39115, 39112, 39109, 39103, 39102, 39100, 39099, 39098, 39097, 39096, 39095, 39094, 39093, 39092, 39091, 39090, 39089, 39088, 39087, 39084, 39083, 39082, 39081, 39080, 39079, 39078, 39077, 39076, 39075, 39072, 39071, 39070, 39069, 39068, 39067, 39066, 39065, 39064, 39063, 39062, 39061, 39060, 39059, 39058, 39057, 39055, 39054, 39053, 39052, 39048, ...] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:150 [2026-06-17 07:14:08.247] [DEBUG] Replied in 243ms [2026-06-17 07:14:13.080] [DEBUG] HANDLE EVENT "set_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"tab" => "location", "value" => ""} [2026-06-17 07:14:13.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=965.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] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:483 [2026-06-17 07:14:13.086] [DEBUG] QUERY OK source="tms_terminal_status_items" db=0.4ms idle=430.8ms SELECT t0.`id`, t0.`itemkey`, t0.`value`, t0.`timestamp`, t0.`message`, t0.`status_log_id`, t0.`inserted_at`, t0.`updated_at`, t0.`status_log_id` FROM `tms_terminal_status_items` AS t0 WHERE (t0.`status_log_id` = ?) ORDER BY t0.`status_log_id` [39115] ↳ TmsCore.TerminalManagement.get_latest_terminal_location/1, at: lib/tms_core/terminal_management.ex:483 [2026-06-17 07:14:13.086] [DEBUG] Replied in 5ms [2026-06-17 07:14:14.959] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:14:14.959] [DEBUG] Replied in 193µs [2026-06-17 07:14:14.959] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:14:14.962] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=1122.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:14:14.962] [DEBUG] Replied in 2ms [2026-06-17 07:14:15.696] [DEBUG] HANDLE EVENT "close_slide_over" in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:14:15.697] [DEBUG] Replied in 1ms [2026-06-17 07:14:15.697] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:14:15.699] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=736.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:14:15.699] [DEBUG] Replied in 1ms [2026-06-17 07:15:00.547] [INFO ] [SlaMonitorWorker] Running at hour=7 checking settlement_date=2026-06-16 [2026-06-17 07:15:00.561] [DEBUG] QUERY OK source="settlement_mis" db=2.4ms queue=1.2ms idle=71.9ms SELECT TRUE FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) LIMIT 1 [~D[2026-06-16]] ↳ SettlementCore.Workers.SlaMonitorWorker.check_mis_generation_sla/1, at: lib/settlement_core/workers/sla_monitor_worker.ex:84 [2026-06-17 07:15:00.561] [WARN ] [SlaMonitorWorker] SLA BREACH: MIS not generated for 2026-06-16 [2026-06-17 07:15:00.674] [INFO ] [SlaMonitorWorker] Running at hour=7 checking settlement_date=2026-06-16 [2026-06-17 07:15:00.676] [DEBUG] QUERY OK source="settlement_mis" db=1.0ms idle=72.8ms SELECT TRUE FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) LIMIT 1 [~D[2026-06-16]] ↳ SettlementCore.Workers.SlaMonitorWorker.check_mis_generation_sla/1, at: lib/settlement_core/workers/sla_monitor_worker.ex:84 [2026-06-17 07:15:00.676] [WARN ] [SlaMonitorWorker] SLA BREACH: MIS not generated for 2026-06-16 [2026-06-17 07:24:08.986] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 35m, MIS in 23h 35m [2026-06-17 07:24:09.018] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 07:24:09.030] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 07:24:11.178] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 07:24:11.178] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 07:24:11.179] [INFO ] Building initial filter cache... [2026-06-17 07:24:11.181] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.5ms idle=832.5ms 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-06-17 07:24:11.182] [DEBUG] QUERY OK source="filter_usage" db=0.3ms queue=0.4ms idle=516.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-06-17 07:24:11.182] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 07:24:11.317] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 07:24:11.329] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 07:24:11.340] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 07:24:16.430] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 40µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fycmQlQ2QQtcYDocGREIUSA4WgBQNCQHOpL26B-rkYVmSXP4o_mcixco", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:24:17.334] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:24:17.343] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=1.3ms idle=223.9ms 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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:24:17.335125Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:24:17.350] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=1.0ms idle=999.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:24:17.352] [DEBUG] QUERY OK source="app_packages" db=0.3ms queue=0.9ms idle=628.7ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:24:17.354] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms queue=1.5ms idle=2.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:24:17.356] [DEBUG] QUERY OK source="terminal_groups" db=1.0ms queue=0.4ms idle=2.4ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:24:17.356] [DEBUG] Replied in 21ms [2026-06-17 07:24:17.365] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:24:17.368] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=0.1ms idle=11.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:24:17.368] [DEBUG] Replied in 3ms [2026-06-17 07:25:36.363] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 07:25:36.363] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T07:24:46Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T07:24:46Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T07:24:46Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T07:24:46Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T07:24:46Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T07:24:46Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T07:24:46Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T07:24:46Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T07:24:46Z","vendor":"MoreFun"} [2026-06-17 07:25:36.364] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:24:46Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:24:46Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:24:46Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:24:46Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:24:46Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:24:46Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:24:46Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:24:46Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T07:24:46Z", "vendor" => "MoreFun"} [2026-06-17 07:25:36.364] [INFO ] Extracted versions for 98251226730002: %{application: "", parameter_config: "", emv_config: "", keys_config: ""} [2026-06-17 07:25:36.375] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 07:25:36.375] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 07:25:36.376] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.5ms idle=1024.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-06-17 07:25:36.378] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms idle=361.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 07:25:36.379] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms queue=0.9ms idle=1.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-06-17 07:25:36.386] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.7ms 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-06-17 07:25:36.387] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.4ms idle=6.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 07:25:36.427] [DEBUG] QUERY OK source="pos_merchant" db=0.4ms queue=38.9ms idle=1.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 07:25:36.432] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=75.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 ["372916040000000"] [2026-06-17 07:25:36.432] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 07:25:36.433] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms queue=0.3ms idle=45.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 07:25:36.434] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 07:25:36.443] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 07:25:36.469] [DEBUG] QUERY OK db=14.2ms queue=0.7ms idle=22.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`template_id`,`file_path`,`terminal_id`,`device_vendor`,`device_model`,`parameters_sent`,`push_type`,`config_type`,`trigger_reason`,`log_time`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "79a8332871c3f57df413247c580abf3b2ef31f548fc2fb7dbac586edf0e2682b", 36771, 865, 10, "priv/ota/98251226730002/params.zip", 13, "MoreFun", "MF919", %{"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", ...}, "full", "parameter", "missing_version", ~U[2026-06-17 07:25:36Z], "1.0.0", ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 07:25:36.469] [INFO ] AutoPushService: Created push log 29725 for MF919 params.zip [2026-06-17 07:25:36.470] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 36771, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 07:25:36.470] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:25:36.476] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 07:25:36.478] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=1.0ms idle=43.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-06-17 07:25:36.483] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 07:25:36.519] [DEBUG] QUERY OK db=34.5ms queue=0.5ms idle=18.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`device_vendor`,`device_model`,`push_type`,`config_type`,`trigger_reason`,`log_time`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "414ac34212efccc188dd603e70f4445d2fd8134eca30fae90d90d60e49ef0517", 36931, 17947, "priv/ota/98251226730002/l3config.zip", 13, "MoreFun", "MF919", "full", "emv_config", "missing_version", ~U[2026-06-17 07:25:36Z], "1.0.1", ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 07:25:36.519] [INFO ] AutoPushService: Created push log 29726 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 07:25:36.520] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 36931, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 07:25:36.520] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:25:36.520] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 07:25:36.521] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=41.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-06-17 07:25:36.521] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 07:25:36.522] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 07:25:36.522] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 07:25:36.578] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 07:25:36.579] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:25:36.580] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:25:36.582] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=59.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-06-17 07:25:36.582] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 07:25:36.582] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 07:25:36.583] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:25:36.584] [INFO ] Terminal updated: 98251226730002 [2026-06-17 07:25:36.584] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 07:25:36.585] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 07:25:36.593] [DEBUG] QUERY OK source="tms_terminals" db=7.3ms queue=0.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:25:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:25:36.619] [DEBUG] QUERY OK db=25.2ms queue=0.7ms idle=8.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T07:24:46Z", ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:25:36.626] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39120, oid: "organization_id", upload_time: "2026-06-17T07:24:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]} [2026-06-17 07:25:36.626] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:24:46Z", "value" => "online"} [2026-06-17 07:25:36.658] [DEBUG] QUERY OK db=31.4ms queue=0.5ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T07:24:46Z", "online", "status", 39120, ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:25:36.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304120, itemkey: "status", value: "online", timestamp: "2026-06-17T07:24:46Z", message: "Terminal status update", status_log_id: 39120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]}} [2026-06-17 07:25:36.659] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 07:25:36.660] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.5ms idle=39.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:25:36], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 07:25:36.660] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:24:46Z", "value" => "54"} [2026-06-17 07:25:36.661] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:25:36.682] [DEBUG] QUERY OK db=21.7ms idle=2.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T07:24:46Z", "54", "battery", 39120, ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:25:36.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304122, itemkey: "battery", value: "54", timestamp: "2026-06-17T07:24:46Z", message: "Battery level", status_log_id: 39120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]}} [2026-06-17 07:25:36.683] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:24:46Z", "value" => "online"} [2026-06-17 07:25:36.701] [DEBUG] QUERY OK db=16.7ms queue=0.5ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T07:24:46Z", "online", "network", 39120, ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:25:36.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304124, itemkey: "network", value: "online", timestamp: "2026-06-17T07:24:46Z", message: "Network connectivity", status_log_id: 39120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]}} [2026-06-17 07:25:36.702] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 07:25:36.703] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=19.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:25:36], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 07:25:36.703] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:25:36.703] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:24:46Z", "value" => "0"} [2026-06-17 07:25:36.736] [DEBUG] QUERY OK db=31.2ms queue=0.5ms idle=3.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T07:24:46Z", "0", "cpu", 39120, ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:25:36.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304126, itemkey: "cpu", value: "0", timestamp: "2026-06-17T07:24:46Z", message: "CPU usage percentage", status_log_id: 39120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]}} [2026-06-17 07:25:36.736] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:24:46Z", "value" => ""} [2026-06-17 07:25:36.769] [DEBUG] QUERY OK db=29.7ms queue=2.2ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T07:24:46Z", "parameter_config", 39120, ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:25:36.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304127, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T07:24:46Z", message: "Current parameters version", status_log_id: 39120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]}} [2026-06-17 07:25:36.769] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:24:46Z", "value" => ""} [2026-06-17 07:25:36.786] [DEBUG] QUERY OK db=15.7ms queue=0.8ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T07:24:46Z", "emv_config", 39120, ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:25:36.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304129, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T07:24:46Z", message: "Current EMV config version", status_log_id: 39120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]}} [2026-06-17 07:25:36.787] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:24:46Z", "value" => ""} [2026-06-17 07:25:36.806] [DEBUG] QUERY OK db=17.4ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T07:24:46Z", "keys_config", 39120, ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:25:36.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304130, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T07:24:46Z", message: "Current keys config version", status_log_id: 39120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]}} [2026-06-17 07:25:36.806] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:24:46Z", "value" => ""} [2026-06-17 07:25:36.831] [DEBUG] QUERY OK db=24.4ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T07:24:46Z", "application", 39120, ~N[2026-06-17 07:25:36], ~N[2026-06-17 07:25:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:25:36.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304131, itemkey: "application", value: nil, timestamp: "2026-06-17T07:24:46Z", message: "Current application version", status_log_id: 39120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:25:36], updated_at: ~N[2026-06-17 07:25:36]}} [2026-06-17 07:25:36.833] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=26.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:25:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 07:25:36.845] [DEBUG] QUERY OK source="tms_terminals" db=11.7ms idle=2.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:25:36.847] [WARN ] Unexpected async result [2026-06-17 07:25:36.847] [WARN ] Unexpected async result [2026-06-17 07:25:36.853] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 07:40:26.918] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 19m, MIS in 23h 19m [2026-06-17 07:40:26.979] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 07:40:26.990] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 07:40:28.594] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 07:40:28.594] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 07:40:28.595] [INFO ] Building initial filter cache... [2026-06-17 07:40:28.606] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.1ms idle=959.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-06-17 07:40:28.620] [DEBUG] QUERY OK source="filter_usage" db=1.5ms queue=2.3ms idle=144.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-06-17 07:40:28.620] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 07:40:28.782] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 07:40:28.801] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 07:40:28.810] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 07:40:34.219] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 55µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fycmQlQ2QQtcYDocGREIUSA4WgBQNCQHOpL26B-rkYVmSXP4o_mcixco", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "1", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:40:34.593] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 07:40:34.593] [INFO ] Incoming JSON payload: {"oid":"6d67c435-a26c-41df-aa6f-4855824676d4","sn":"98251226730001","uploadTime":"2026-06-17T15:43:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T15:43:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T15:43:47Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 07:40:34.595] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6d67c435-a26c-41df-aa6f-4855824676d4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T15:43:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T15:43:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T15:43:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T15:43:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T15:43:47Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T15:43:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T15:43:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T15:43:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T15:43:47Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T15:43:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T15:43:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T15:43:47Z", "vendor" => "morefun"} [2026-06-17 07:40:34.600] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 07:40:34.638] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 07:40:34.641] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 07:40:34.645] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms queue=0.4ms idle=978.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-06-17 07:40:34.648] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=3.2ms idle=166.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-06-17 07:40:34.649] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 07:40:34.693] [DEBUG] QUERY OK source="tms_terminals" db=5.5ms queue=6.6ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:40:34.758] [INFO ] Terminal updated: 98251226730001 [2026-06-17 07:40:34.804] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms queue=0.9ms idle=76.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 07:40:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:40:34.810] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 07:40:34.811] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=118.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:629 [2026-06-17 07:40:34.845] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms idle=38.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:40:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:40:34.893] [DEBUG] QUERY OK db=21.3ms queue=2.1ms idle=57.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6d67c435-a26c-41df-aa6f-4855824676d4", "2026-06-17T15:43:47Z", ~N[2026-06-17 07:40:34], ~N[2026-06-17 07:40:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:40:34.917] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39122, oid: "6d67c435-a26c-41df-aa6f-4855824676d4", upload_time: "2026-06-17T15:43:47Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:34], updated_at: ~N[2026-06-17 07:40:34]} [2026-06-17 07:40:34.917] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T15:43:47Z", "value" => "morefun"} [2026-06-17 07:40:34.932] [DEBUG] QUERY OK db=12.3ms queue=1.2ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "morefun", 39122, "vendor", ~N[2026-06-17 07:40:34], ~N[2026-06-17 07:40:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:34.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304151, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:34], updated_at: ~N[2026-06-17 07:40:34]}} [2026-06-17 07:40:34.933] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T15:43:47Z", "value" => "kiosk_launcher"} [2026-06-17 07:40:34.954] [DEBUG] QUERY OK db=18.3ms queue=0.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "kiosk_launcher", 39122, "model", ~N[2026-06-17 07:40:34], ~N[2026-06-17 07:40:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:34.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304152, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:34], updated_at: ~N[2026-06-17 07:40:34]}} [2026-06-17 07:40:34.954] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T15:43:47Z", "value" => "1.0"} [2026-06-17 07:40:34.990] [DEBUG] QUERY OK db=33.0ms queue=2.2ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "1.0", 39122, "app_version", ~N[2026-06-17 07:40:34], ~N[2026-06-17 07:40:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:34.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304153, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:34], updated_at: ~N[2026-06-17 07:40:34]}} [2026-06-17 07:40:34.991] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T15:43:47Z", "value" => "13"} [2026-06-17 07:40:35.014] [DEBUG] QUERY OK db=23.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "13", 39122, "android_version", ~N[2026-06-17 07:40:34], ~N[2026-06-17 07:40:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304154, itemkey: "android_version", value: "13", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:34], updated_at: ~N[2026-06-17 07:40:34]}} [2026-06-17 07:40:35.014] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T15:43:47Z", "value" => "913"} [2026-06-17 07:40:35.027] [DEBUG] QUERY OK db=12.7ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "913", 39122, "ram_free_mb", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304155, itemkey: "ram_free_mb", value: "913", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.028] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T15:43:47Z", "value" => "WIFI"} [2026-06-17 07:40:35.041] [DEBUG] QUERY OK db=12.1ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "WIFI", 39122, "network_type", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304156, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.041] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T15:43:47Z", "value" => "true"} [2026-06-17 07:40:35.077] [DEBUG] QUERY OK db=34.7ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "true", 39122, "kiosk_active", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304157, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.083] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T15:43:47Z", "value" => ""} [2026-06-17 07:40:35.084] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:40:35.105] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=0.6ms idle=570.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:40:35.099499Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:40:35.111] [DEBUG] QUERY OK db=26.7ms queue=1.3ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T15:43:47Z", 39122, "sim_operator", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304158, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.113] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"} [2026-06-17 07:40:35.127] [DEBUG] QUERY OK db=13.6ms queue=0.2ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "UNKNOWN", 39122, "sim_number", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304159, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.127] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"} [2026-06-17 07:40:35.141] [DEBUG] QUERY OK db=12.1ms queue=1.4ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "UNKNOWN", 39122, "sim_iccid", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304160, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.142] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"} [2026-06-17 07:40:35.147] [DEBUG] QUERY OK source="tms_terminals" db=6.2ms queue=2.9ms idle=11.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:40:35.155] [DEBUG] QUERY OK source="app_packages" db=0.5ms queue=2.2ms idle=4.6ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:40:35.173] [DEBUG] QUERY OK db=28.8ms queue=0.1ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "UNKNOWN", 39122, "sim_imsi", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304161, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.173] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"} [2026-06-17 07:40:35.189] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.8ms idle=14.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:40:35.191] [DEBUG] QUERY OK source="terminal_groups" db=0.8ms queue=1.4ms idle=0.4ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:40:35.192] [DEBUG] Replied in 107ms [2026-06-17 07:40:35.204] [DEBUG] QUERY OK db=29.1ms queue=0.4ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "UNKNOWN", 39122, "sim_iccid2", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304162, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.205] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T15:43:47Z", "value" => "UNKNOWN"} [2026-06-17 07:40:35.226] [DEBUG] QUERY OK db=14.8ms queue=0.3ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "UNKNOWN", 39122, "sim_imsi2", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304163, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.226] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T15:43:47Z", "value" => "5"} [2026-06-17 07:40:35.226] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:40:35.234] [DEBUG] QUERY OK source="tms_terminals" db=7.2ms idle=1.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:40:35.237] [DEBUG] QUERY OK db=10.7ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "5", 39122, "data_usage_mb", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304164, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.238] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T15:43:47Z", "value" => "0"} [2026-06-17 07:40:35.235] [DEBUG] Replied in 8ms [2026-06-17 07:40:35.258] [DEBUG] QUERY OK db=20.0ms idle=3.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "0", 39122, "mobile_data_mb", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304165, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.259] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T15:43:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 07:40:35.306] [DEBUG] QUERY OK db=35.1ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:43:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., 39122, "installed_apps", ~N[2026-06-17 07:40:35], ~N[2026-06-17 07:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:40:35.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304166, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T15:43:47Z", message: nil, status_log_id: 39122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:40:35], updated_at: ~N[2026-06-17 07:40:35]}} [2026-06-17 07:40:35.584] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=1.2ms idle=323.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:40:35.612] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 07:40:44.806] [INFO ] GET /terminals [2026-06-17 07:40:44.832] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 07:40:44.841] [DEBUG] QUERY OK source="users_tokens" db=1.0ms idle=304.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:40:44.840299Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 07:40:44.847] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=362.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:40:44.849] [DEBUG] QUERY OK source="app_packages" db=0.5ms idle=99.7ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:40:44.850] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:40:44.852] [DEBUG] QUERY OK source="terminal_groups" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:40:44.853] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:40:44.862] [INFO ] Sent 200 in 55ms [2026-06-17 07:41:44.050] [INFO ] GET /images/favicon.png [2026-06-17 07:41:44.126] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/Shamanth/prverification/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/Shamanth/prverification/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-06-17 07:41:44.217] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 32µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "RTEMHTo8QTd4bFoAJQoWAgEPZDthHQ0euffmXH-NOU6qoCNgNhSXXQJv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 07:41:44.714] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 07:41:44.715] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.1ms idle=175.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 07:41:44.714848Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 07:41:44.716] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=779.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 07:41:44.717] [DEBUG] QUERY OK source="app_packages" db=0.4ms idle=230.7ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 07:41:44.718] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 07:41:44.719] [DEBUG] QUERY OK source="terminal_groups" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 07:41:44.719] [DEBUG] Replied in 4ms [2026-06-17 07:41:44.719] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 07:41:44.720] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 07:41:44.720] [DEBUG] Replied in 1ms [2026-06-17 07:43:36.388] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 07:43:36.388] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T07:42:46Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T07:42:46Z","value":"46"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T07:42:46Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T07:42:46Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T07:42:46Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T07:42:46Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T07:42:46Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T07:42:46Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T07:42:46Z","vendor":"MoreFun"} [2026-06-17 07:43:36.389] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:42:46Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:42:46Z", "value" => "46"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:42:46Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:42:46Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:42:46Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:42:46Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:42:46Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:42:46Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T07:42:46Z", "vendor" => "MoreFun"} [2026-06-17 07:43:36.389] [INFO ] Extracted versions for 98251226730002: %{application: "", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 07:43:36.389] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 07:43:36.389] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 07:43:36.390] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1088.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-06-17 07:43:36.392] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=85.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 07:43:36.393] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=0.5ms 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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 07:43:36.395] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.4ms idle=1.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-06-17 07:43:36.404] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.5ms idle=10.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 07:43:36.436] [DEBUG] QUERY OK source="pos_merchant" db=0.4ms queue=27.9ms idle=12.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 07:43:36.440] [DEBUG] QUERY OK db=0.7ms queue=0.4ms idle=1951.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 ["372916040000000"] [2026-06-17 07:43:36.441] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 07:43:36.445] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms queue=0.3ms idle=39.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 07:43:36.445] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 07:43:36.452] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 07:43:36.460] [DEBUG] QUERY OK db=6.0ms queue=0.4ms idle=17.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`template_id`,`file_path`,`terminal_id`,`push_type`,`parameters_sent`,`device_vendor`,`device_model`,`config_type`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5f2b2f0518af17c043b7a656c79c522d2707682026d93e14e39c39cfe460ae8b", 6690, 865, 10, "priv/ota/98251226730002/params.zip", 13, "full", %{"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", ...}, "MoreFun", "MF919", "parameter", ~U[2026-06-17 07:43:36Z], "missing_version", "1.0.0", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 07:43:36.460] [INFO ] AutoPushService: Created push log 29727 for MF919 params.zip [2026-06-17 07:43:36.466] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 6690, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 07:43:36.466] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:43:36.470] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 07:43:36.472] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.8ms idle=25.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-06-17 07:43:36.481] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 07:43:36.488] [DEBUG] QUERY OK db=5.3ms queue=0.8ms idle=22.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "16264905bedba7398b73a2d9a0bf486282b5b4493727ced9964c1a9026f55e85", 6850, 17947, "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", ~U[2026-06-17 07:43:36Z], "missing_version", "1.0.1", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 07:43:36.489] [INFO ] AutoPushService: Created push log 29728 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 07:43:36.489] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 6850, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 07:43:36.489] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 07:43:36.490] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 07:43:36.491] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.1ms idle=18.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-06-17 07:43:36.496] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 07:43:36.497] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=7.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 07:43:36.497] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 07:43:36.539] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 07:43:36.539] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:43:36.540] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 07:43:36.541] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=49.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-06-17 07:43:36.541] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 07:43:36.541] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 07:43:36.542] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=44.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 07:43:36.542] [INFO ] Terminal updated: 98251226730002 [2026-06-17 07:43:36.555] [DEBUG] QUERY OK source="tms_terminals" db=11.8ms queue=0.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "1.0.1", "1.0.0", ~N[2026-06-17 07:43:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:43:36.557] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.4ms idle=13.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-06-17 07:43:36.558] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.2ms 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-06-17 07:43:36.558] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 07:43:36.559] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 07:43:36.605] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms queue=41.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:43:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:43:36.612] [DEBUG] QUERY OK db=5.9ms queue=0.4ms idle=46.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T07:42:46Z", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:43:36.612] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39123, oid: "organization_id", upload_time: "2026-06-17T07:42:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]} [2026-06-17 07:43:36.612] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T07:42:46Z", "value" => "online"} [2026-06-17 07:43:36.618] [DEBUG] QUERY OK db=4.6ms queue=0.6ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T07:42:46Z", "online", 39123, "status", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:43:36.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304167, itemkey: "status", value: "online", timestamp: "2026-06-17T07:42:46Z", message: "Terminal status update", status_log_id: 39123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]}} [2026-06-17 07:43:36.618] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 07:43:36.620] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=7.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:43:36], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 07:43:36.620] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T07:42:46Z", "value" => "46"} [2026-06-17 07:43:36.620] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:43:36.626] [DEBUG] QUERY OK db=5.7ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T07:42:46Z", "46", 39123, "battery", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:43:36.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304168, itemkey: "battery", value: "46", timestamp: "2026-06-17T07:42:46Z", message: "Battery level", status_log_id: 39123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]}} [2026-06-17 07:43:36.627] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T07:42:46Z", "value" => "online"} [2026-06-17 07:43:36.634] [DEBUG] QUERY OK db=6.4ms queue=0.7ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T07:42:46Z", "online", 39123, "network", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:43:36.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304169, itemkey: "network", value: "online", timestamp: "2026-06-17T07:42:46Z", message: "Network connectivity", status_log_id: 39123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]}} [2026-06-17 07:43:36.635] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 07:43:36.636] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=8.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:43:36], 13] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 07:43:36.636] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T07:42:46Z", "value" => "0"} [2026-06-17 07:43:36.636] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 07:43:36.642] [DEBUG] QUERY OK db=5.2ms queue=0.1ms idle=2.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T07:42:46Z", "0", 39123, "cpu", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:43:36.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304170, itemkey: "cpu", value: "0", timestamp: "2026-06-17T07:42:46Z", message: "CPU usage percentage", status_log_id: 39123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]}} [2026-06-17 07:43:36.643] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T07:42:46Z", "value" => "1.0.0"} [2026-06-17 07:43:36.649] [DEBUG] QUERY OK db=5.7ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T07:42:46Z", "1.0.0", 39123, "parameter_config", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:43:36.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304171, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T07:42:46Z", message: "Current parameters version", status_log_id: 39123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]}} [2026-06-17 07:43:36.649] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T07:42:46Z", "value" => "1.0.1"} [2026-06-17 07:43:36.656] [DEBUG] QUERY OK db=6.7ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T07:42:46Z", "1.0.1", 39123, "emv_config", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:43:36.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304172, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T07:42:46Z", message: "Current EMV config version", status_log_id: 39123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]}} [2026-06-17 07:43:36.657] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T07:42:46Z", "value" => ""} [2026-06-17 07:43:36.703] [DEBUG] QUERY OK db=4.6ms queue=41.1ms idle=8.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T07:42:46Z", 39123, "keys_config", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:43:36.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304173, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T07:42:46Z", message: "Current keys config version", status_log_id: 39123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]}} [2026-06-17 07:43:36.703] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T07:42:46Z", "value" => ""} [2026-06-17 07:43:36.749] [DEBUG] QUERY OK db=4.7ms queue=40.6ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T07:42:46Z", 39123, "application", ~N[2026-06-17 07:43:36], ~N[2026-06-17 07:43:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:43:36.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304174, itemkey: "application", value: nil, timestamp: "2026-06-17T07:42:46Z", message: "Current application version", status_log_id: 39123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:43:36], updated_at: ~N[2026-06-17 07:43:36]}} [2026-06-17 07:43:36.750] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=46.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:43:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 07:43:36.752] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 07:43:36.758] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 07:43:36.758] [WARN ] Unexpected async result [2026-06-17 07:43:36.758] [WARN ] Unexpected async result [2026-06-17 07:45:28.582] [INFO ] Running offline device check... [2026-06-17 07:45:28.582] [INFO ] Starting offline device check... [2026-06-17 07:45:28.583] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=953.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:679 [2026-06-17 07:45:28.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms queue=0.3ms idle=93.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:694 [2026-06-17 07:45:28.595] [INFO ] Starting scheduled rule validation [2026-06-17 07:45:28.595] [DEBUG] Validating missing assignments [2026-06-17 07:45:28.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms queue=0.1ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.604] [DEBUG] QUERY OK source="terminal_group_rules" db=1.0ms queue=0.9ms idle=1.0ms 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-06-17 07:45:28.604] [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:694 [2026-06-17 07:45:28.605] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=0.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.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-06-17 07:45:28.605] [DEBUG] Re-applied 0 rules during validation [2026-06-17 07:45:28.606] [DEBUG] Validating invalid assignments [2026-06-17 07:45:28.606] [DEBUG] Validating rule consistency [2026-06-17 07:45:28.606] [DEBUG] Updating group terminal counts [2026-06-17 07:45:28.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.607] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.4ms idle=1.1ms 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-06-17 07:45:28.607] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.608] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.2ms idle=0.1ms 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-06-17 07:45:28.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.608] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.4ms 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-06-17 07:45:28.610] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.2ms idle=0.8ms 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-06-17 07:45:28.611] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=0.8ms 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-06-17 07:45:28.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.612] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.2ms idle=0.1ms 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-06-17 07:45:28.612] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.2ms idle=0.2ms 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-06-17 07:45:28.613] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.2ms idle=0.1ms 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-06-17 07:45:28.613] [DEBUG] Current group statistics: %{groups: %{active: 0, total: 0, by_type: %{}}, rules: %{active: 0, total: 0}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 07:45:28.614] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 07:45:28.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.617] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.627] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.629] [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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.630] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.630] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.650] [DEBUG] QUERY OK source="tms_terminals" db=9.5ms idle=9.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:45:28], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 07:45:28.650] [INFO ] Terminal 98250623730001 back online [2026-06-17 07:45:28.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=10.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:694 [2026-06-17 07:45:28.652] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.653] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.656] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.666] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.668] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.678] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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:694 [2026-06-17 07:45:28.682] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.683] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.687] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.689] [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:694 [2026-06-17 07:45:28.690] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.690] [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:694 [2026-06-17 07:45:28.692] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.692] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.693] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:45:28.693] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 07:45:28.693] [INFO ] Offline device check completed successfully [2026-06-17 07:50:28.695] [INFO ] Running offline device check... [2026-06-17 07:50:28.695] [INFO ] Starting offline device check... [2026-06-17 07:50:28.697] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=174.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:679 [2026-06-17 07:50:28.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=166.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:694 [2026-06-17 07:50:28.709] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.711] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.712] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.713] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.715] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.715] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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:694 [2026-06-17 07:50:28.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.733] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.734] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.735] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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:694 [2026-06-17 07:50:28.749] [DEBUG] QUERY OK source="tms_terminals" db=5.8ms idle=8.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:50:28], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 07:50:28.749] [INFO ] Terminal 98250623730001 back online [2026-06-17 07:50:28.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.751] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.753] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.754] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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:694 [2026-06-17 07:50:28.755] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.766] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.767] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.768] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.773] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms 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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.774] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.776] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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:694 [2026-06-17 07:50:28.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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:694 [2026-06-17 07:50:28.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.783] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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:694 [2026-06-17 07:50:28.784] [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:694 [2026-06-17 07:50:28.785] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.785] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.787] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.788] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.788] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:50:28.788] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 07:50:28.789] [INFO ] Offline device check completed successfully [2026-06-17 07:55:28.595] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 07:55:28.596] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=646.1ms 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-06-17 07:55:28.597] [DEBUG] QUERY OK source="filter_usage" db=0.3ms idle=237.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-06-17 07:55:28.597] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 07:55:28.790] [INFO ] Running offline device check... [2026-06-17 07:55:28.790] [INFO ] Starting offline device check... [2026-06-17 07:55:28.793] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.9ms idle=194.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:679 [2026-06-17 07:55:28.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms queue=2.1ms idle=197.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:694 [2026-06-17 07:55:28.806] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms 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:694 [2026-06-17 07:55:28.808] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.810] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.812] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.813] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.815] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.817] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.828] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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:694 [2026-06-17 07:55:28.834] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.836] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.837] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.837] [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:694 [2026-06-17 07:55:28.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.868] [DEBUG] QUERY OK source="tms_terminals" db=22.2ms idle=8.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:55:28], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 07:55:28.869] [INFO ] Terminal 98250623730001 back online [2026-06-17 07:55:28.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.871] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.873] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.884] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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:694 [2026-06-17 07:55:28.908] [DEBUG] QUERY OK source="tms_terminals" db=23.0ms idle=10.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:55:28], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 07:55:28.908] [INFO ] Terminal 98251226730001 back online [2026-06-17 07:55:28.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=24.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:694 [2026-06-17 07:55:28.910] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.917] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.920] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.922] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.929] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.930] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.932] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.932] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.933] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 07:55:28.933] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 07:55:28.933] [INFO ] Offline device check completed successfully [2026-06-17 07:56:04.148] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "RTEMHTo8QTd4bFoAJQoWAgEPZDthHQ0euffmXH-NOU6qoCNgNhSXXQJv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZIcnBnUzladWZiUFhUOFRrVmJRWlhnWHcNbm9ub2RlQG5vaG9zdAAACIYAAAAAAAAAAG0AAAAscGh4OmxwOm1yK0JyNGlTRHo0UFdDc05OMDhZS0E9PTE3ODE2ODIxMDQyMTduBgCZZ4fUngFiABJ1AA.IuEjlzdWtrAxAVwO7nn_rE0QePfnht2JWMQwBg73T_E", "vsn" => "2.0.0"} [2026-06-17 07:56:27.760] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 28µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "RTEMHTo8QTd4bFoAJQoWAgEPZDthHQ0euffmXH-NOU6qoCNgNhSXXQJv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZIcnBnUzladWZiUFhUOFRrVmJRWlhnWHcNbm9ub2RlQG5vaG9zdAAAEp8AAAAAAAAAAG0AAAAscGh4OmxwOmlBcUhIREZaTDIxenlhMEVDMFZZK2c9PTE3ODE2ODI5NjQxNDhuBgC1hpTUngFiABJ1AA.3dGSVZxkmYxUE9ADoT9vDQ9IVK5zC_qvASNURGe4aSU", "vsn" => "2.0.0"} [2026-06-17 07:57:16.111] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 32µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "RTEMHTo8QTd4bFoAJQoWAgEPZDthHQ0euffmXH-NOU6qoCNgNhSXXQJv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZIcnBnUzladWZiUFhUOFRrVmJRWlhnWHcNbm9ub2RlQG5vaG9zdAAAEsAAAAAAAAAAAG0AAAAscGh4OmxwOjM3MDFaRi9sbUN6Z2Z3alUwME1FSlE9PTE3ODE2ODI5ODc3NjBuBgDx4pTUngFiABJ1AA.UwL6bs_Dx0UwiZqf06xHjZPSy78-9puQx-Hc-ooOwNQ", "vsn" => "2.0.0"} [2026-06-17 07:59:41.851] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 07:59:41.851] [INFO ] Incoming JSON payload: {"oid":"0011667e-f338-440b-beb9-f486c4ec6dd9","sn":"98251226730001","uploadTime":"2026-06-17T16:02:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T16:02:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T16:02:55Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 07:59:41.852] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0011667e-f338-440b-beb9-f486c4ec6dd9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T16:02:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T16:02:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T16:02:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T16:02:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T16:02:55Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T16:02:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T16:02:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T16:02:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T16:02:55Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T16:02:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T16:02:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T16:02:55Z", "vendor" => "morefun"} [2026-06-17 07:59:41.852] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 07:59:41.852] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 07:59:41.853] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 07:59:41.854] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1266.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-06-17 07:59:41.855] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=764.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-06-17 07:59:41.855] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 07:59:41.858] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.8ms 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:98 [2026-06-17 07:59:41.858] [INFO ] Terminal updated: 98251226730001 [2026-06-17 07:59:41.900] [DEBUG] QUERY OK source="tms_terminals" db=42.3ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 07:59:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 07:59:41.901] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 07:59:41.902] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=43.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:629 [2026-06-17 07:59:41.941] [DEBUG] QUERY OK source="tms_terminals" db=38.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 07:59:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 07:59:41.964] [DEBUG] QUERY OK db=22.7ms idle=39.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0011667e-f338-440b-beb9-f486c4ec6dd9", "2026-06-17T16:02:55Z", ~N[2026-06-17 07:59:41], ~N[2026-06-17 07:59:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 07:59:41.964] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39124, oid: "0011667e-f338-440b-beb9-f486c4ec6dd9", upload_time: "2026-06-17T16:02:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:41], updated_at: ~N[2026-06-17 07:59:41]} [2026-06-17 07:59:41.965] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T16:02:55Z", "value" => "morefun"} [2026-06-17 07:59:42.035] [DEBUG] QUERY OK db=27.2ms queue=42.4ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "morefun", 39124, "vendor", ~N[2026-06-17 07:59:41], ~N[2026-06-17 07:59:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304175, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:41], updated_at: ~N[2026-06-17 07:59:41]}} [2026-06-17 07:59:42.035] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T16:02:55Z", "value" => "kiosk_launcher"} [2026-06-17 07:59:42.099] [DEBUG] QUERY OK db=22.4ms queue=41.1ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "kiosk_launcher", 39124, "model", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304176, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.099] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T16:02:55Z", "value" => "1.0"} [2026-06-17 07:59:42.135] [DEBUG] QUERY OK db=35.1ms idle=7.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "1.0", 39124, "app_version", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304177, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.135] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T16:02:55Z", "value" => "13"} [2026-06-17 07:59:42.160] [DEBUG] QUERY OK db=24.5ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "13", 39124, "android_version", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304178, itemkey: "android_version", value: "13", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.161] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T16:02:55Z", "value" => "920"} [2026-06-17 07:59:42.186] [DEBUG] QUERY OK db=24.5ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "920", 39124, "ram_free_mb", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304179, itemkey: "ram_free_mb", value: "920", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.186] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T16:02:55Z", "value" => "WIFI"} [2026-06-17 07:59:42.219] [DEBUG] QUERY OK db=32.2ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "WIFI", 39124, "network_type", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304180, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.219] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T16:02:55Z", "value" => "true"} [2026-06-17 07:59:42.237] [DEBUG] QUERY OK db=17.9ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "true", 39124, "kiosk_active", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304181, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.238] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T16:02:55Z", "value" => ""} [2026-06-17 07:59:42.262] [DEBUG] QUERY OK db=23.8ms queue=0.3ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T16:02:55Z", 39124, "sim_operator", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304182, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.263] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"} [2026-06-17 07:59:42.299] [DEBUG] QUERY OK db=35.3ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "UNKNOWN", 39124, "sim_number", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304183, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.299] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"} [2026-06-17 07:59:42.327] [DEBUG] QUERY OK db=27.9ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "UNKNOWN", 39124, "sim_iccid", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304184, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.328] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"} [2026-06-17 07:59:42.356] [DEBUG] QUERY OK db=28.0ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "UNKNOWN", 39124, "sim_imsi", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304185, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.356] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"} [2026-06-17 07:59:42.387] [DEBUG] QUERY OK db=29.9ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "UNKNOWN", 39124, "sim_iccid2", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304186, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.387] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T16:02:55Z", "value" => "UNKNOWN"} [2026-06-17 07:59:42.411] [DEBUG] QUERY OK db=23.5ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "UNKNOWN", 39124, "sim_imsi2", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304187, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.411] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T16:02:55Z", "value" => "5"} [2026-06-17 07:59:42.435] [DEBUG] QUERY OK db=23.3ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "5", 39124, "data_usage_mb", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304188, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.435] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T16:02:55Z", "value" => "0"} [2026-06-17 07:59:42.465] [DEBUG] QUERY OK db=28.7ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "0", 39124, "mobile_data_mb", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304189, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:42.467] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T16:02:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 07:59:42.493] [DEBUG] QUERY OK db=25.4ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:02:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., 39124, "installed_apps", ~N[2026-06-17 07:59:42], ~N[2026-06-17 07:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 07:59:42.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304190, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T16:02:55Z", message: nil, status_log_id: 39124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 07:59:42], updated_at: ~N[2026-06-17 07:59:42]}} [2026-06-17 07:59:55.872] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 33µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "RTEMHTo8QTd4bFoAJQoWAgEPZDthHQ0euffmXH-NOU6qoCNgNhSXXQJv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZIcnBnUzladWZiUFhUOFRrVmJRWlhnWHcNbm9ub2RlQG5vaG9zdAAAEx4AAAAAAAAAAG0AAAAscGh4OmxwOlB1bEd2cnFVemE5ZDVicXU2ODE5dVE9PTE3ODE2ODMwMzYxMTFuBgDQn5XUngFiABJ1AA.joJ552i5TC9QnI_liYb9CjTAiM5T6wOWGLFTIROwqwQ", "vsn" => "2.0.0"} [2026-06-17 08:00:28.934] [INFO ] Running offline device check... [2026-06-17 08:00:28.934] [INFO ] Starting offline device check... [2026-06-17 08:00:28.937] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=2.0ms idle=702.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:679 [2026-06-17 08:00:28.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms idle=549.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:694 [2026-06-17 08:00:28.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.1ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.957] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.4ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.958] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.959] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.961] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.963] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms queue=0.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:28.987] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.016] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms idle=10.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:00:28], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:00:29.019] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:00:29.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=32.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:694 [2026-06-17 08:00:29.028] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.028] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.029] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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:694 [2026-06-17 08:00:29.067] [DEBUG] QUERY OK source="tms_terminals" db=25.0ms queue=0.1ms idle=13.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:00:29], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:00:29.067] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:00:29.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=27.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:694 [2026-06-17 08:00:29.072] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.073] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.076] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=14.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:694 [2026-06-17 08:00:29.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.106] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=7.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:694 [2026-06-17 08:00:29.109] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.111] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.5ms 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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.122] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.124] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.125] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.128] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:00:29.129] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 08:00:29.129] [INFO ] Offline device check completed successfully [2026-06-17 08:00:45.221] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "RTEMHTo8QTd4bFoAJQoWAgEPZDthHQ0euffmXH-NOU6qoCNgNhSXXQJv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZIcnBnUzladWZiUFhUOFRrVmJRWlhnWHcNbm9ub2RlQG5vaG9zdAAAFJQAAAAAAAAAAG0AAAAscGh4OmxwOnhkTjFHR29OUWp2MDVCTWlGbGRNK0E9PTE3ODE2ODMxOTU4NzJuBgDgD5jUngFiABJ1AA.O7vDQYTcJ3ypGOw9TRRGzy_xPBYEYIS0uiku_2_azUg", "vsn" => "2.0.0"} [2026-06-17 08:05:29.130] [INFO ] Running offline device check... [2026-06-17 08:05:29.130] [INFO ] Starting offline device check... [2026-06-17 08:05:29.131] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=308.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:679 [2026-06-17 08:05:29.138] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=60.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:694 [2026-06-17 08:05:29.142] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.144] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.145] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.145] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.146] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.147] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.147] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.148] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.150] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.154] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.158] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.204] [DEBUG] QUERY OK source="tms_terminals" db=45.1ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:05:29], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:05:29.204] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:05:29.208] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=45.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:694 [2026-06-17 08:05:29.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.211] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.212] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.221] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.9ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.235] [DEBUG] QUERY OK source="tms_terminals" db=14.3ms idle=8.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:05:29], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:05:29.235] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:05:29.237] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.238] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.239] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.241] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.242] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.252] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.253] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.254] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.261] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.266] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.267] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.268] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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:694 [2026-06-17 08:05:29.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.272] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.273] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.274] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.276] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.276] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.277] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:05:29.277] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 08:05:29.277] [INFO ] Offline device check completed successfully [2026-06-17 08:10:28.598] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 08:10:28.600] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=974.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-06-17 08:10:28.601] [DEBUG] QUERY OK source="filter_usage" db=0.5ms idle=375.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-06-17 08:10:28.601] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 08:10:29.278] [INFO ] Running offline device check... [2026-06-17 08:10:29.278] [INFO ] Starting offline device check... [2026-06-17 08:10:29.280] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.1ms 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 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:679 [2026-06-17 08:10:29.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=16.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:694 [2026-06-17 08:10:29.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms queue=0.2ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.294] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.295] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.296] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.297] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.298] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.299] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.300] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.308] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.335] [DEBUG] QUERY OK source="tms_terminals" db=21.2ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:10:29], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:10:29.335] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:10:29.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=22.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:694 [2026-06-17 08:10:29.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.341] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.342] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.352] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.371] [DEBUG] QUERY OK source="tms_terminals" db=17.8ms queue=0.7ms idle=10.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:10:29], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:10:29.372] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:10:29.373] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=20.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:694 [2026-06-17 08:10:29.374] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.375] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.376] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.377] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.389] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=12.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:694 [2026-06-17 08:10:29.390] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.396] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms 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:694 [2026-06-17 08:10:29.396] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.400] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.401] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.404] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.405] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.3ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.406] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.408] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.412] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.412] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.413] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:10:29.413] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 08:10:29.414] [INFO ] Offline device check completed successfully [2026-06-17 08:15:00.752] [INFO ] [SlaMonitorWorker] Running at hour=8 checking settlement_date=2026-06-16 [2026-06-17 08:15:00.760] [DEBUG] QUERY OK source="settlement_mis" db=0.4ms queue=0.5ms idle=30.2ms SELECT TRUE FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) AND (s0.`approval_status` = 'approved') LIMIT 1 [~D[2026-06-16]] ↳ SettlementCore.Workers.SlaMonitorWorker.check_mis_approval_sla/1, at: lib/settlement_core/workers/sla_monitor_worker.ex:97 [2026-06-17 08:15:29.415] [INFO ] Running offline device check... [2026-06-17 08:15:29.415] [INFO ] Starting offline device check... [2026-06-17 08:15:29.417] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.1ms idle=778.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:679 [2026-06-17 08:15:29.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=446.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:694 [2026-06-17 08:15:29.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=7.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:694 [2026-06-17 08:15:29.432] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.433] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.435] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.439] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.440] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.441] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.443] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.446] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.447] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.453] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.472] [DEBUG] QUERY OK source="tms_terminals" db=18.4ms idle=5.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:15:29], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:15:29.472] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:15:29.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms queue=0.1ms idle=19.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:694 [2026-06-17 08:15:29.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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:694 [2026-06-17 08:15:29.480] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms 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:694 [2026-06-17 08:15:29.493] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.516] [DEBUG] QUERY OK source="tms_terminals" db=21.8ms idle=11.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:15:29], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:15:29.516] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:15:29.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=23.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:694 [2026-06-17 08:15:29.521] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.523] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.526] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.538] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.552] [DEBUG] QUERY OK source="tms_terminals" db=12.6ms idle=13.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:15:29], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:15:29.552] [INFO ] Terminal 98251226730001 back online [2026-06-17 08:15:29.555] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=13.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:694 [2026-06-17 08:15:29.556] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.565] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.567] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.570] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.572] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.573] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.573] [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:694 [2026-06-17 08:15:29.575] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.576] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.577] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:15:29.577] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 08:15:29.577] [INFO ] Offline device check completed successfully [2026-06-17 08:20:29.578] [INFO ] Running offline device check... [2026-06-17 08:20:29.578] [INFO ] Starting offline device check... [2026-06-17 08:20:29.579] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1827.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:679 [2026-06-17 08:20:29.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=826.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:694 [2026-06-17 08:20:29.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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:694 [2026-06-17 08:20:29.592] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.593] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.594] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.597] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.598] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.604] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.614] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:20:29], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:20:29.614] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:20:29.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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:694 [2026-06-17 08:20:29.620] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.621] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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:694 [2026-06-17 08:20:29.635] [DEBUG] QUERY OK source="tms_terminals" db=5.9ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:20:29], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:20:29.636] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:20:29.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.638] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.640] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.661] [DEBUG] QUERY OK source="tms_terminals" db=5.5ms queue=0.1ms idle=12.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:20:29], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:20:29.661] [INFO ] Terminal 98251226730001 back online [2026-06-17 08:20:29.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.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:694 [2026-06-17 08:20:29.663] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.670] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=6.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:694 [2026-06-17 08:20:29.673] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.676] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.682] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.683] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.685] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.689] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:20:29.689] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 08:20:29.689] [INFO ] Offline device check completed successfully [2026-06-17 08:25:28.602] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 08:25:28.603] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=520.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-06-17 08:25:28.604] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=21.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-06-17 08:25:28.604] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 08:25:29.690] [INFO ] Running offline device check... [2026-06-17 08:25:29.690] [INFO ] Starting offline device check... [2026-06-17 08:25:29.694] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=105.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:679 [2026-06-17 08:25:29.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=33.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:694 [2026-06-17 08:25:29.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.1ms idle=7.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:694 [2026-06-17 08:25:29.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.717] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.7ms 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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.720] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.721] [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:694 [2026-06-17 08:25:29.722] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.726] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.732] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.733] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.742] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms queue=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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.748] [DEBUG] QUERY OK source="tms_terminals" db=5.5ms idle=10.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:25:29], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:25:29.749] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:25:29.755] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.765] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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:694 [2026-06-17 08:25:29.769] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.779] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.786] [DEBUG] QUERY OK source="tms_terminals" db=5.5ms idle=11.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:25:29], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:25:29.786] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:25:29.788] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.790] [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:694 [2026-06-17 08:25:29.791] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.792] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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:694 [2026-06-17 08:25:29.809] [DEBUG] QUERY OK source="tms_terminals" db=5.8ms idle=11.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:25:29], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:25:29.809] [INFO ] Terminal 98251226730001 back online [2026-06-17 08:25:29.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.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:694 [2026-06-17 08:25:29.812] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.819] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=7.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:694 [2026-06-17 08:25:29.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.832] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.835] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.835] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.836] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.837] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.839] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.840] [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:694 [2026-06-17 08:25:29.841] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:25:29.841] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 08:25:29.841] [INFO ] Offline device check completed successfully [2026-06-17 08:30:29.842] [INFO ] Running offline device check... [2026-06-17 08:30:29.842] [INFO ] Starting offline device check... [2026-06-17 08:30:29.846] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms queue=0.1ms idle=1172.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:679 [2026-06-17 08:30:29.854] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms idle=482.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:694 [2026-06-17 08:30:29.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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:694 [2026-06-17 08:30:29.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.866] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.867] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.869] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.869] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.871] [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:694 [2026-06-17 08:30:29.878] [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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.912] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=7.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:30:29], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:30:29.912] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:30:29.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=25.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:694 [2026-06-17 08:30:29.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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:694 [2026-06-17 08:30:29.919] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.920] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.933] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms idle=8.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:30:29], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:30:29.933] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:30:29.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.938] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.942] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.962] [DEBUG] QUERY OK source="tms_terminals" db=6.2ms idle=13.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:30:29], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:30:29.963] [INFO ] Terminal 98251226730001 back online [2026-06-17 08:30:29.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.966] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.978] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms queue=0.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=13.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:694 [2026-06-17 08:30:29.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.983] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.994] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.995] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.997] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.998] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.999] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:30:29.999] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 08:30:29.999] [INFO ] Offline device check completed successfully [2026-06-17 08:35:30.000] [INFO ] Running offline device check... [2026-06-17 08:35:30.000] [INFO ] Starting offline device check... [2026-06-17 08:35:30.001] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=821.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:679 [2026-06-17 08:35:30.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=316.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:694 [2026-06-17 08:35:30.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.014] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.015] [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:694 [2026-06-17 08:35:30.015] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.016] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.016] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.017] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.019] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.022] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.023] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.028] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.042] [DEBUG] QUERY OK source="tms_terminals" db=13.5ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:35:30], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:35:30.042] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:35:30.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.048] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.049] [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:694 [2026-06-17 08:35:30.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.070] [DEBUG] QUERY OK source="tms_terminals" db=13.1ms idle=7.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:35:30], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:35:30.070] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:35:30.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=13.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:694 [2026-06-17 08:35:30.072] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.073] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.075] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.087] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.100] [DEBUG] QUERY OK source="tms_terminals" db=12.5ms queue=0.1ms idle=12.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:35:30], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:35:30.100] [INFO ] Terminal 98251226730001 back online [2026-06-17 08:35:30.101] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.102] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.107] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.111] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.113] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.117] [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:694 [2026-06-17 08:35:30.118] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.119] [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:694 [2026-06-17 08:35:30.121] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.121] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.122] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:35:30.122] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 08:35:30.122] [INFO ] Offline device check completed successfully [2026-06-17 08:36:35.012] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 08:36:35.012] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-16T23:46:55Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-16T23:46:55Z","value":"80"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-16T23:46:55Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-16T23:46:55Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-16T23:46:55Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-16T23:46:55Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-16T23:46:55Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-16T23:46:55Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-16T23:46:55Z","vendor":"MoreFun"} [2026-06-17 08:36:35.012] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T23:46:55Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T23:46:55Z", "value" => "80"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T23:46:55Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T23:46:55Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T23:46:55Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T23:46:55Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T23:46:55Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T23:46:55Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-16T23:46:55Z", "vendor" => "MoreFun"} [2026-06-17 08:36:35.012] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", parameter_config: "1.0.0", emv_config: "1.0.1", keys_config: ""} [2026-06-17 08:36:35.013] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 08:36:35.013] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 08:36:35.013] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=673.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-06-17 08:36:35.014] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=326.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 08:36:35.016] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms queue=0.1ms idle=1.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-06-17 08:36:35.019] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=1.8ms idle=1.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-06-17 08:36:35.020] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms idle=3.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:135 [2026-06-17 08:36:35.061] [DEBUG] QUERY OK source="pos_merchant" db=40.2ms idle=1.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:146 [2026-06-17 08:36:35.062] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1375.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 ["419926360000000"] [2026-06-17 08:36:35.063] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 08:36:35.064] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=42.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:232 [2026-06-17 08:36:35.064] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 08:36:35.065] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 08:36:35.113] [DEBUG] QUERY OK db=45.4ms queue=1.4ms idle=4.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`template_id`,`file_path`,`terminal_id`,`push_type`,`parameters_sent`,`device_vendor`,`device_model`,`config_type`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ee24380828742aaf93561caaf2167b47c01bbb88a8621319fa0a096ccde5e2dc", 10754, 867, 10, "priv/ota/98250623730001/params.zip", 19, "full", %{"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", ...}, "MoreFun", "MF919", "parameter", ~U[2026-06-17 08:36:35Z], "missing_version", "1.0.0", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 08:36:35.113] [INFO ] AutoPushService: Created push log 29729 for MF919 params.zip [2026-06-17 08:36:35.113] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 10754, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 08:36:35.113] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 08:36:35.113] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 08:36:35.115] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=50.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-06-17 08:36:35.118] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 08:36:35.130] [DEBUG] QUERY OK db=10.7ms queue=0.4ms idle=5.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8e44a7b450f9ccc5a8bf28b793653ca741d91a492453db2c62d0dc94017c56b9", 7203, 17947, "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", ~U[2026-06-17 08:36:35Z], "missing_version", "1.0.1", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 08:36:35.130] [INFO ] AutoPushService: Created push log 29730 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 08:36:35.130] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 7203, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 08:36:35.130] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 08:36:35.130] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 08:36:35.131] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=15.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-06-17 08:36:35.131] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 08:36:35.132] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 08:36:35.132] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 08:36:35.133] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 08:36:35.134] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 08:36:35.134] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 08:36:35.134] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=2.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-06-17 08:36:35.134] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 08:36:35.134] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 08:36:35.135] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 08:36:35.135] [INFO ] Terminal updated: 98250623730001 [2026-06-17 08:36:35.162] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 08:36:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 08:36:35.165] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms queue=0.1ms idle=26.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` = ?)) 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-06-17 08:36:35.166] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=3.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-06-17 08:36:35.167] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-06-17 08:36:35.167] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 08:36:35.168] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 08:36:35.201] [DEBUG] QUERY OK source="tms_terminals" db=33.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:36:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 08:36:35.213] [DEBUG] QUERY OK db=10.2ms idle=35.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-16T23:46:55Z", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 08:36:35.214] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39125, oid: "organization_id", upload_time: "2026-06-16T23:46:55Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]} [2026-06-17 08:36:35.214] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-16T23:46:55Z", "value" => "online"} [2026-06-17 08:36:35.224] [DEBUG] QUERY OK db=9.7ms queue=0.1ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-16T23:46:55Z", "online", 39125, "status", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:35.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304191, itemkey: "status", value: "online", timestamp: "2026-06-16T23:46:55Z", message: "Terminal status update", status_log_id: 39125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]}} [2026-06-17 08:36:35.224] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 08:36:35.226] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=11.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:36:35], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 08:36:35.226] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-16T23:46:55Z", "value" => "80"} [2026-06-17 08:36:35.257] [DEBUG] QUERY OK db=30.4ms queue=0.1ms idle=1.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-16T23:46:55Z", "80", 39125, "battery", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:35.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304192, itemkey: "battery", value: "80", timestamp: "2026-06-16T23:46:55Z", message: "Battery level", status_log_id: 39125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]}} [2026-06-17 08:36:35.257] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-16T23:46:55Z", "value" => "online"} [2026-06-17 08:36:35.280] [DEBUG] QUERY OK db=22.5ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-16T23:46:55Z", "online", 39125, "network", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:35.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304193, itemkey: "network", value: "online", timestamp: "2026-06-16T23:46:55Z", message: "Network connectivity", status_log_id: 39125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]}} [2026-06-17 08:36:35.280] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 08:36:35.281] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=24.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:36:35], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 08:36:35.281] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-16T23:46:55Z", "value" => "0"} [2026-06-17 08:36:35.302] [DEBUG] QUERY OK db=19.5ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-16T23:46:55Z", "0", 39125, "cpu", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:35.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304194, itemkey: "cpu", value: "0", timestamp: "2026-06-16T23:46:55Z", message: "CPU usage percentage", status_log_id: 39125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]}} [2026-06-17 08:36:35.302] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-16T23:46:55Z", "value" => "1.0.0"} [2026-06-17 08:36:35.314] [DEBUG] QUERY OK db=11.2ms queue=0.1ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-16T23:46:55Z", "1.0.0", 39125, "parameter_config", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:35.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304195, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-16T23:46:55Z", message: "Current parameters version", status_log_id: 39125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]}} [2026-06-17 08:36:35.315] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-16T23:46:55Z", "value" => "1.0.1"} [2026-06-17 08:36:35.334] [DEBUG] QUERY OK db=18.5ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-16T23:46:55Z", "1.0.1", 39125, "emv_config", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:35.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304196, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-16T23:46:55Z", message: "Current EMV config version", status_log_id: 39125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]}} [2026-06-17 08:36:35.334] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-16T23:46:55Z", "value" => ""} [2026-06-17 08:36:35.399] [DEBUG] QUERY OK db=22.1ms queue=41.7ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-16T23:46:55Z", 39125, "keys_config", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:35.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304197, itemkey: "keys_config", value: nil, timestamp: "2026-06-16T23:46:55Z", message: "Current keys config version", status_log_id: 39125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]}} [2026-06-17 08:36:35.399] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-16T23:46:55Z", "value" => "3.8.5"} [2026-06-17 08:36:35.418] [DEBUG] QUERY OK db=18.8ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-06-16T23:46:55Z", "3.8.5", 39125, "application", ~N[2026-06-17 08:36:35], ~N[2026-06-17 08:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:35.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304198, itemkey: "application", value: "3.8.5", timestamp: "2026-06-16T23:46:55Z", message: "Current application version", status_log_id: 39125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:35], updated_at: ~N[2026-06-17 08:36:35]}} [2026-06-17 08:36:35.419] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=20.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:36:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 08:36:35.419] [WARN ] Unexpected async result [2026-06-17 08:36:35.419] [WARN ] Unexpected async result [2026-06-17 08:36:54.670] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 08:36:54.670] [INFO ] Incoming JSON payload: {"oid":"bbac26dc-cc2a-45ee-a3cd-53905b3398a1","sn":"98251226730001","uploadTime":"2026-06-17T16:40:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T16:40:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T16:40:00Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 08:36:54.671] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bbac26dc-cc2a-45ee-a3cd-53905b3398a1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T16:40:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T16:40:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T16:40:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T16:40:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T16:40:00Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T16:40:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T16:40:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T16:40:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T16:40:00Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T16:40:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T16:40:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T16:40:00Z", "vendor" => "morefun"} [2026-06-17 08:36:54.671] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 08:36:54.672] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 08:36:54.672] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 08:36:54.673] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1280.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-06-17 08:36:54.674] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=279.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-06-17 08:36:54.674] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 08:36:54.676] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=1.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:98 [2026-06-17 08:36:54.677] [INFO ] Terminal updated: 98251226730001 [2026-06-17 08:36:54.693] [DEBUG] QUERY OK source="tms_terminals" db=15.0ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 08:36:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 08:36:54.693] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 08:36:54.694] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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:629 [2026-06-17 08:36:54.714] [DEBUG] QUERY OK source="tms_terminals" db=19.0ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:36:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 08:36:54.747] [DEBUG] QUERY OK db=33.0ms idle=19.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bbac26dc-cc2a-45ee-a3cd-53905b3398a1", "2026-06-17T16:40:00Z", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 08:36:54.748] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39126, oid: "bbac26dc-cc2a-45ee-a3cd-53905b3398a1", upload_time: "2026-06-17T16:40:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]} [2026-06-17 08:36:54.748] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T16:40:00Z", "value" => "morefun"} [2026-06-17 08:36:54.768] [DEBUG] QUERY OK db=19.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "morefun", 39126, "vendor", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304199, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.769] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T16:40:00Z", "value" => "kiosk_launcher"} [2026-06-17 08:36:54.821] [DEBUG] QUERY OK db=10.5ms queue=41.4ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "kiosk_launcher", 39126, "model", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304200, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.821] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T16:40:00Z", "value" => "1.0"} [2026-06-17 08:36:54.833] [DEBUG] QUERY OK db=10.9ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "1.0", 39126, "app_version", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304201, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.833] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T16:40:00Z", "value" => "13"} [2026-06-17 08:36:54.867] [DEBUG] QUERY OK db=32.9ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "13", 39126, "android_version", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304202, itemkey: "android_version", value: "13", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.867] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T16:40:00Z", "value" => "918"} [2026-06-17 08:36:54.890] [DEBUG] QUERY OK db=23.0ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "918", 39126, "ram_free_mb", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304203, itemkey: "ram_free_mb", value: "918", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.891] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T16:40:00Z", "value" => "WIFI"} [2026-06-17 08:36:54.904] [DEBUG] QUERY OK db=13.3ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "WIFI", 39126, "network_type", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304204, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.905] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T16:40:00Z", "value" => "true"} [2026-06-17 08:36:54.918] [DEBUG] QUERY OK db=12.8ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "true", 39126, "kiosk_active", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304205, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.919] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T16:40:00Z", "value" => ""} [2026-06-17 08:36:54.939] [DEBUG] QUERY OK db=19.8ms queue=0.1ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T16:40:00Z", 39126, "sim_operator", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304206, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.940] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"} [2026-06-17 08:36:54.968] [DEBUG] QUERY OK db=27.9ms queue=0.1ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "UNKNOWN", 39126, "sim_number", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304207, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.968] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"} [2026-06-17 08:36:54.993] [DEBUG] QUERY OK db=24.3ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "UNKNOWN", 39126, "sim_iccid", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:54.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304208, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:54.994] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"} [2026-06-17 08:36:55.014] [DEBUG] QUERY OK db=19.9ms queue=0.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "UNKNOWN", 39126, "sim_imsi", ~N[2026-06-17 08:36:54], ~N[2026-06-17 08:36:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:55.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304209, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:54], updated_at: ~N[2026-06-17 08:36:54]}} [2026-06-17 08:36:55.015] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"} [2026-06-17 08:36:55.034] [DEBUG] QUERY OK db=19.0ms queue=0.1ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "UNKNOWN", 39126, "sim_iccid2", ~N[2026-06-17 08:36:55], ~N[2026-06-17 08:36:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:55.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304210, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:55], updated_at: ~N[2026-06-17 08:36:55]}} [2026-06-17 08:36:55.035] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T16:40:00Z", "value" => "UNKNOWN"} [2026-06-17 08:36:55.073] [DEBUG] QUERY OK db=37.3ms queue=0.4ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "UNKNOWN", 39126, "sim_imsi2", ~N[2026-06-17 08:36:55], ~N[2026-06-17 08:36:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:55.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304211, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:55], updated_at: ~N[2026-06-17 08:36:55]}} [2026-06-17 08:36:55.074] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T16:40:00Z", "value" => "5"} [2026-06-17 08:36:55.093] [DEBUG] QUERY OK db=18.9ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "5", 39126, "data_usage_mb", ~N[2026-06-17 08:36:55], ~N[2026-06-17 08:36:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:55.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304212, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:55], updated_at: ~N[2026-06-17 08:36:55]}} [2026-06-17 08:36:55.094] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T16:40:00Z", "value" => "0"} [2026-06-17 08:36:55.106] [DEBUG] QUERY OK db=11.5ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "0", 39126, "mobile_data_mb", ~N[2026-06-17 08:36:55], ~N[2026-06-17 08:36:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:55.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304213, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:55], updated_at: ~N[2026-06-17 08:36:55]}} [2026-06-17 08:36:55.106] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T16:40:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 08:36:55.122] [DEBUG] QUERY OK db=14.7ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:40:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., 39126, "installed_apps", ~N[2026-06-17 08:36:55], ~N[2026-06-17 08:36:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:36:55.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304214, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T16:40:00Z", message: nil, status_log_id: 39126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:36:55], updated_at: ~N[2026-06-17 08:36:55]}} [2026-06-17 08:40:28.605] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 08:40:28.606] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=907.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-06-17 08:40:28.607] [DEBUG] QUERY OK source="filter_usage" db=0.3ms idle=657.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-06-17 08:40:28.607] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 08:40:30.123] [INFO ] Running offline device check... [2026-06-17 08:40:30.124] [INFO ] Starting offline device check... [2026-06-17 08:40:30.125] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=426.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:679 [2026-06-17 08:40:30.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=172.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:694 [2026-06-17 08:40:30.136] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.137] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.140] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.140] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.141] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.141] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.142] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.144] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.148] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.148] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.177] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:40:30], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:40:30.177] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:40:30.184] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=24.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:694 [2026-06-17 08:40:30.186] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.187] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.188] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.196] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.197] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.198] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.199] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.200] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.201] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.211] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.212] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=10.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.213] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.222] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.223] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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:694 [2026-06-17 08:40:30.224] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.227] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.228] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.229] [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:694 [2026-06-17 08:40:30.230] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.231] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.233] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.233] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.234] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:40:30.234] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 08:40:30.234] [INFO ] Offline device check completed successfully [2026-06-17 08:45:28.614] [INFO ] Starting scheduled rule validation [2026-06-17 08:45:28.614] [DEBUG] Validating missing assignments [2026-06-17 08:45:28.616] [DEBUG] QUERY OK source="terminal_group_rules" db=0.9ms queue=0.1ms idle=1579.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_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-06-17 08:45:28.617] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=876.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-06-17 08:45:28.618] [DEBUG] Re-applied 0 rules during validation [2026-06-17 08:45:28.618] [DEBUG] Validating invalid assignments [2026-06-17 08:45:28.618] [DEBUG] Validating rule consistency [2026-06-17 08:45:28.618] [DEBUG] Updating group terminal counts [2026-06-17 08:45:28.619] [DEBUG] QUERY OK source="terminal_groups" db=0.8ms idle=2.2ms 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-06-17 08:45:28.621] [DEBUG] QUERY OK source="terminal_groups" db=1.4ms idle=2.2ms 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-06-17 08:45:28.621] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms idle=1.8ms 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-06-17 08:45:28.622] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.7ms 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-06-17 08:45:28.623] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.7ms 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-06-17 08:45:28.623] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms idle=0.7ms 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-06-17 08:45:28.624] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=0.6ms 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-06-17 08:45:28.624] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms idle=0.7ms 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-06-17 08:45:28.625] [DEBUG] Current group statistics: %{groups: %{active: 0, total: 0, by_type: %{}}, rules: %{active: 0, total: 0}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 08:45:28.625] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 08:45:30.235] [INFO ] Running offline device check... [2026-06-17 08:45:30.235] [INFO ] Starting offline device check... [2026-06-17 08:45:30.236] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms idle=524.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:679 [2026-06-17 08:45:30.242] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=491.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:694 [2026-06-17 08:45:30.246] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms queue=0.1ms 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:694 [2026-06-17 08:45:30.247] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.248] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.249] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.249] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.250] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.251] [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:694 [2026-06-17 08:45:30.251] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.253] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.256] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.257] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.273] [DEBUG] QUERY OK source="tms_terminals" db=11.3ms queue=0.1ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:45:30], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:45:30.273] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:45:30.277] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=12.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:694 [2026-06-17 08:45:30.279] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.279] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.280] [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:694 [2026-06-17 08:45:30.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.290] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.291] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.292] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.293] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.303] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.304] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.304] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.314] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.315] [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:694 [2026-06-17 08:45:30.319] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.319] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.320] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.321] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.321] [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:694 [2026-06-17 08:45:30.323] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.323] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.324] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:45:30.324] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 08:45:30.324] [INFO ] Offline device check completed successfully [2026-06-17 08:45:42.582] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 08:45:47.583] [INFO ] Incoming JSON payload: {"oid":"7e1679cf-7aec-474d-a219-112fd636301e","sn":"98251226730001","uploadTime":"2026-06-17T16:48:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T16:48:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T16:48:55Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 08:45:47.584] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7e1679cf-7aec-474d-a219-112fd636301e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T16:48:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T16:48:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T16:48:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T16:48:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T16:48:55Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T16:48:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T16:48:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T16:48:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T16:48:55Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T16:48:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T16:48:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T16:48:55Z", "vendor" => "morefun"} [2026-06-17 08:45:47.584] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 08:45:47.584] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 08:45:47.584] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 08:45:47.585] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1799.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-06-17 08:45:47.586] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=796.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.`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-06-17 08:45:47.586] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 08:45:47.586] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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:98 [2026-06-17 08:45:47.587] [INFO ] Terminal updated: 98251226730001 [2026-06-17 08:45:47.606] [DEBUG] QUERY OK source="tms_terminals" db=18.8ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 08:45:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 08:45:47.606] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 08:45:47.607] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=19.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:629 [2026-06-17 08:45:47.626] [DEBUG] QUERY OK source="tms_terminals" db=18.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:45:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 08:45:47.662] [DEBUG] QUERY OK db=34.9ms idle=20.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7e1679cf-7aec-474d-a219-112fd636301e", "2026-06-17T16:48:55Z", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 08:45:47.662] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39127, oid: "7e1679cf-7aec-474d-a219-112fd636301e", upload_time: "2026-06-17T16:48:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]} [2026-06-17 08:45:47.663] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T16:48:55Z", "value" => "morefun"} [2026-06-17 08:45:47.680] [DEBUG] QUERY OK db=17.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "morefun", 39127, "vendor", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304215, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.680] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T16:48:55Z", "value" => "kiosk_launcher"} [2026-06-17 08:45:47.695] [DEBUG] QUERY OK db=14.3ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "kiosk_launcher", 39127, "model", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304216, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.695] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T16:48:55Z", "value" => "1.0"} [2026-06-17 08:45:47.707] [DEBUG] QUERY OK db=10.8ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "1.0", 39127, "app_version", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304217, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.707] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T16:48:55Z", "value" => "13"} [2026-06-17 08:45:47.734] [DEBUG] QUERY OK db=26.9ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "13", 39127, "android_version", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304218, itemkey: "android_version", value: "13", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.735] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T16:48:55Z", "value" => "917"} [2026-06-17 08:45:47.767] [DEBUG] QUERY OK db=31.9ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "917", 39127, "ram_free_mb", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304219, itemkey: "ram_free_mb", value: "917", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.769] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T16:48:55Z", "value" => "WIFI"} [2026-06-17 08:45:47.783] [DEBUG] QUERY OK db=13.6ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "WIFI", 39127, "network_type", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304220, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.784] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T16:48:55Z", "value" => "true"} [2026-06-17 08:45:47.797] [DEBUG] QUERY OK db=12.8ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "true", 39127, "kiosk_active", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304221, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.797] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T16:48:55Z", "value" => ""} [2026-06-17 08:45:47.819] [DEBUG] QUERY OK db=21.5ms idle=6.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T16:48:55Z", 39127, "sim_operator", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304222, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.819] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"} [2026-06-17 08:45:47.843] [DEBUG] QUERY OK db=23.5ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "UNKNOWN", 39127, "sim_number", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304223, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.844] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"} [2026-06-17 08:45:47.867] [DEBUG] QUERY OK db=22.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "UNKNOWN", 39127, "sim_iccid", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304224, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.867] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"} [2026-06-17 08:45:47.882] [DEBUG] QUERY OK db=13.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "UNKNOWN", 39127, "sim_imsi", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304225, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.882] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"} [2026-06-17 08:45:47.895] [DEBUG] QUERY OK db=12.8ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "UNKNOWN", 39127, "sim_iccid2", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304226, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.896] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T16:48:55Z", "value" => "UNKNOWN"} [2026-06-17 08:45:47.911] [DEBUG] QUERY OK db=14.4ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "UNKNOWN", 39127, "sim_imsi2", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304227, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.911] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T16:48:55Z", "value" => "5"} [2026-06-17 08:45:47.940] [DEBUG] QUERY OK db=28.9ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "5", 39127, "data_usage_mb", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304228, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.942] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T16:48:55Z", "value" => "0"} [2026-06-17 08:45:47.972] [DEBUG] QUERY OK db=29.9ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "0", 39127, "mobile_data_mb", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304229, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:45:47.976] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T16:48:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 08:45:47.992] [DEBUG] QUERY OK db=14.8ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:48:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., 39127, "installed_apps", ~N[2026-06-17 08:45:47], ~N[2026-06-17 08:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:45:47.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304230, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T16:48:55Z", message: nil, status_log_id: 39127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:45:47], updated_at: ~N[2026-06-17 08:45:47]}} [2026-06-17 08:50:30.325] [INFO ] Running offline device check... [2026-06-17 08:50:30.325] [INFO ] Starting offline device check... [2026-06-17 08:50:30.326] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1600.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:679 [2026-06-17 08:50:30.335] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms idle=807.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:694 [2026-06-17 08:50:30.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.341] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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:694 [2026-06-17 08:50:30.342] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.343] [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:694 [2026-06-17 08:50:30.344] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.344] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.345] [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:694 [2026-06-17 08:50:30.345] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.347] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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:694 [2026-06-17 08:50:30.350] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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:694 [2026-06-17 08:50:30.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.356] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.370] [DEBUG] QUERY OK source="tms_terminals" db=13.7ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:50:30], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:50:30.370] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:50:30.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=14.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:694 [2026-06-17 08:50:30.376] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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:694 [2026-06-17 08:50:30.378] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.378] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.388] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.389] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.390] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.391] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.391] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.401] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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:694 [2026-06-17 08:50:30.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=10.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:694 [2026-06-17 08:50:30.403] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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:694 [2026-06-17 08:50:30.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.412] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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:694 [2026-06-17 08:50:30.413] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.415] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.419] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.420] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.420] [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:694 [2026-06-17 08:50:30.421] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.422] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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:694 [2026-06-17 08:50:30.425] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:50:30.425] [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:694 [2026-06-17 08:50:30.425] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 08:50:30.425] [INFO ] Offline device check completed successfully [2026-06-17 08:54:52.570] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 08:54:52.570] [INFO ] Incoming JSON payload: {"oid":"4230f067-f493-4f78-a20b-6bd2a8e3c782","sn":"98251226730001","uploadTime":"2026-06-17T16:57:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T16:57:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T16:57: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 08:54:52.571] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4230f067-f493-4f78-a20b-6bd2a8e3c782", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T16:57:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T16:57:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T16:57:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T16:57:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T16:57:45Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T16:57:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T16:57:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T16:57:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T16:57:45Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T16:57:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T16:57: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T16:57:45Z", "vendor" => "morefun"} [2026-06-17 08:54:52.571] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 08:54:52.572] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 08:54:52.572] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 08:54:52.573] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=579.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-06-17 08:54:52.574] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=407.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-06-17 08:54:52.574] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 08:54:52.576] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.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:98 [2026-06-17 08:54:52.576] [INFO ] Terminal updated: 98251226730001 [2026-06-17 08:54:52.581] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 08:54:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 08:54:52.582] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 08:54:52.583] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 08:54:52.589] [DEBUG] QUERY OK source="tms_terminals" db=6.0ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:54:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 08:54:52.597] [DEBUG] QUERY OK db=7.6ms idle=6.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4230f067-f493-4f78-a20b-6bd2a8e3c782", "2026-06-17T16:57:45Z", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 08:54:52.598] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39128, oid: "4230f067-f493-4f78-a20b-6bd2a8e3c782", upload_time: "2026-06-17T16:57:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]} [2026-06-17 08:54:52.598] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T16:57:45Z", "value" => "morefun"} [2026-06-17 08:54:52.605] [DEBUG] QUERY OK db=7.0ms queue=0.1ms idle=8.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "morefun", 39128, "vendor", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304231, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.606] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T16:57:45Z", "value" => "kiosk_launcher"} [2026-06-17 08:54:52.612] [DEBUG] QUERY OK db=6.3ms idle=8.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "kiosk_launcher", 39128, "model", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304232, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.613] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T16:57:45Z", "value" => "1.0"} [2026-06-17 08:54:52.618] [DEBUG] QUERY OK db=5.2ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "1.0", 39128, "app_version", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304233, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.619] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T16:57:45Z", "value" => "13"} [2026-06-17 08:54:52.623] [DEBUG] QUERY OK db=4.5ms idle=6.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "13", 39128, "android_version", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304234, itemkey: "android_version", value: "13", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.624] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T16:57:45Z", "value" => "919"} [2026-06-17 08:54:52.630] [DEBUG] QUERY OK db=5.8ms idle=5.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "919", 39128, "ram_free_mb", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304235, itemkey: "ram_free_mb", value: "919", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.630] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T16:57:45Z", "value" => "WIFI"} [2026-06-17 08:54:52.635] [DEBUG] QUERY OK db=4.9ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "WIFI", 39128, "network_type", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304236, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.636] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T16:57:45Z", "value" => "true"} [2026-06-17 08:54:52.641] [DEBUG] QUERY OK db=5.2ms idle=6.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "true", 39128, "kiosk_active", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304237, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.642] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T16:57:45Z", "value" => ""} [2026-06-17 08:54:52.648] [DEBUG] QUERY OK db=6.4ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T16:57:45Z", 39128, "sim_operator", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304238, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.649] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"} [2026-06-17 08:54:52.654] [DEBUG] QUERY OK db=4.6ms idle=7.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "UNKNOWN", 39128, "sim_number", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304239, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.654] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"} [2026-06-17 08:54:52.661] [DEBUG] QUERY OK db=7.0ms idle=5.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "UNKNOWN", 39128, "sim_iccid", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304240, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.662] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"} [2026-06-17 08:54:52.668] [DEBUG] QUERY OK db=6.0ms idle=8.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "UNKNOWN", 39128, "sim_imsi", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304241, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.669] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"} [2026-06-17 08:54:52.675] [DEBUG] QUERY OK db=6.0ms idle=7.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "UNKNOWN", 39128, "sim_iccid2", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304242, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.675] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T16:57:45Z", "value" => "UNKNOWN"} [2026-06-17 08:54:52.681] [DEBUG] QUERY OK db=5.4ms idle=7.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "UNKNOWN", 39128, "sim_imsi2", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304243, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.681] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T16:57:45Z", "value" => "5"} [2026-06-17 08:54:52.690] [DEBUG] QUERY OK db=7.9ms idle=6.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "5", 39128, "data_usage_mb", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304244, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.690] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T16:57:45Z", "value" => "0"} [2026-06-17 08:54:52.697] [DEBUG] QUERY OK db=6.5ms idle=9.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57:45Z", "0", 39128, "mobile_data_mb", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304245, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:54:52.698] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T16:57: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 08:54:52.706] [DEBUG] QUERY OK db=6.5ms idle=8.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T16:57: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., 39128, "installed_apps", ~N[2026-06-17 08:54:52], ~N[2026-06-17 08:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 08:54:52.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304246, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T16:57:45Z", message: nil, status_log_id: 39128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 08:54:52], updated_at: ~N[2026-06-17 08:54:52]}} [2026-06-17 08:55:28.608] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 08:55:28.609] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1355.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-06-17 08:55:28.610] [DEBUG] QUERY OK source="filter_usage" db=1.0ms idle=354.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-06-17 08:55:28.610] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 08:55:30.426] [INFO ] Running offline device check... [2026-06-17 08:55:30.426] [INFO ] Starting offline device check... [2026-06-17 08:55:30.428] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=691.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:679 [2026-06-17 08:55:30.433] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=169.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:694 [2026-06-17 08:55:30.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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:694 [2026-06-17 08:55:30.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.439] [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:694 [2026-06-17 08:55:30.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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.440] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms 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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.441] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.441] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.442] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.443] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.446] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.447] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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:694 [2026-06-17 08:55:30.465] [DEBUG] QUERY OK source="tms_terminals" db=13.1ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:55:30], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:55:30.465] [INFO ] Terminal 98251226730002 back online [2026-06-17 08:55:30.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=13.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:694 [2026-06-17 08:55:30.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.471] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.471] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.484] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms idle=7.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 08:55:30], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 08:55:30.484] [INFO ] Terminal 98250623730001 back online [2026-06-17 08:55:30.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.486] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.487] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.488] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.488] [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:694 [2026-06-17 08:55:30.498] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.499] [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:694 [2026-06-17 08:55:30.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.508] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.511] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.516] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.517] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.517] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.519] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.520] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 08:55:30.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms 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:694 [2026-06-17 08:55:30.520] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 08:55:30.521] [INFO ] Offline device check completed successfully [2026-06-17 09:00:30.521] [INFO ] Running offline device check... [2026-06-17 09:00:30.521] [INFO ] Starting offline device check... [2026-06-17 09:00:30.523] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.1ms idle=1508.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:679 [2026-06-17 09:00:30.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=509.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:694 [2026-06-17 09:00:30.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.536] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.536] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.537] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.538] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.538] [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:694 [2026-06-17 09:00:30.539] [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:694 [2026-06-17 09:00:30.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=0.1ms 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:694 [2026-06-17 09:00:30.544] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.545] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.550] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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:694 [2026-06-17 09:00:30.557] [DEBUG] QUERY OK source="tms_terminals" db=6.9ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:00:30], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 09:00:30.557] [INFO ] Terminal 98251226730002 back online [2026-06-17 09:00:30.561] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.563] [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:694 [2026-06-17 09:00:30.563] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.577] [DEBUG] QUERY OK source="tms_terminals" db=5.5ms idle=7.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:00:30], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 09:00:30.577] [INFO ] Terminal 98250623730001 back online [2026-06-17 09:00:30.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.579] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.580] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.581] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.581] [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:694 [2026-06-17 09:00:30.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.593] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.599] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.604] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.604] [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:694 [2026-06-17 09:00:30.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.609] [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:694 [2026-06-17 09:00:30.610] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.610] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.612] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.613] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.613] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:00:30.613] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 09:00:30.613] [INFO ] Offline device check completed successfully [2026-06-17 09:02:07.493] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 09:02:07.493] [INFO ] Incoming JSON payload: {"oid":"6d737758-2419-492c-bf36-dc0bfd99daf7","sn":"98251226730001","uploadTime":"2026-06-17T17:05:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"ram_free_mb","value":"914","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T17:05:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T17:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 09:02:07.494] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6d737758-2419-492c-bf36-dc0bfd99daf7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T17:05:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T17:05:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T17:05:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T17:05:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T17:05:20Z", "value" => "914"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T17:05:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T17:05:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T17:05:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T17:05:20Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T17:05:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T17:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T17:05:20Z", "vendor" => "morefun"} [2026-06-17 09:02:07.494] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 09:02:07.494] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 09:02:07.494] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 09:02:07.496] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=1227.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-06-17 09:02:07.497] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=226.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-06-17 09:02:07.497] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 09:02:07.498] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 09:02:07.499] [INFO ] Terminal updated: 98251226730001 [2026-06-17 09:02:07.520] [DEBUG] QUERY OK source="tms_terminals" db=21.4ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 09:02:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 09:02:07.521] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 09:02:07.521] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=22.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:629 [2026-06-17 09:02:07.532] [DEBUG] QUERY OK source="tms_terminals" db=10.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:02:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 09:02:07.562] [DEBUG] QUERY OK db=29.5ms idle=10.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6d737758-2419-492c-bf36-dc0bfd99daf7", "2026-06-17T17:05:20Z", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 09:02:07.562] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39129, oid: "6d737758-2419-492c-bf36-dc0bfd99daf7", upload_time: "2026-06-17T17:05:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]} [2026-06-17 09:02:07.562] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T17:05:20Z", "value" => "morefun"} [2026-06-17 09:02:07.595] [DEBUG] QUERY OK db=32.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "morefun", 39129, "vendor", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304247, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.595] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T17:05:20Z", "value" => "kiosk_launcher"} [2026-06-17 09:02:07.607] [DEBUG] QUERY OK db=11.3ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "kiosk_launcher", 39129, "model", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304248, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.608] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T17:05:20Z", "value" => "1.0"} [2026-06-17 09:02:07.622] [DEBUG] QUERY OK db=14.4ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "1.0", 39129, "app_version", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304249, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.623] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T17:05:20Z", "value" => "13"} [2026-06-17 09:02:07.645] [DEBUG] QUERY OK db=21.5ms queue=0.1ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "13", 39129, "android_version", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304250, itemkey: "android_version", value: "13", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.645] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T17:05:20Z", "value" => "914"} [2026-06-17 09:02:07.677] [DEBUG] QUERY OK db=31.3ms queue=0.1ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "914", 39129, "ram_free_mb", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304251, itemkey: "ram_free_mb", value: "914", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.677] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T17:05:20Z", "value" => "WIFI"} [2026-06-17 09:02:07.699] [DEBUG] QUERY OK db=21.1ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "WIFI", 39129, "network_type", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304252, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.699] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T17:05:20Z", "value" => "true"} [2026-06-17 09:02:07.710] [DEBUG] QUERY OK db=10.3ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "true", 39129, "kiosk_active", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304253, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.710] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T17:05:20Z", "value" => ""} [2026-06-17 09:02:07.724] [DEBUG] QUERY OK db=13.1ms idle=11.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T17:05:20Z", 39129, "sim_operator", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304254, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.724] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"} [2026-06-17 09:02:07.746] [DEBUG] QUERY OK db=21.7ms queue=0.1ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "UNKNOWN", 39129, "sim_number", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304255, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.747] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"} [2026-06-17 09:02:07.770] [DEBUG] QUERY OK db=22.9ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "UNKNOWN", 39129, "sim_iccid", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304256, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.770] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"} [2026-06-17 09:02:07.787] [DEBUG] QUERY OK db=15.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "UNKNOWN", 39129, "sim_imsi", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304257, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.787] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"} [2026-06-17 09:02:07.802] [DEBUG] QUERY OK db=14.3ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "UNKNOWN", 39129, "sim_iccid2", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304258, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.803] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T17:05:20Z", "value" => "UNKNOWN"} [2026-06-17 09:02:07.816] [DEBUG] QUERY OK db=13.2ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "UNKNOWN", 39129, "sim_imsi2", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304259, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.817] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T17:05:20Z", "value" => "5"} [2026-06-17 09:02:07.839] [DEBUG] QUERY OK db=21.8ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "5", 39129, "data_usage_mb", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304260, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.839] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T17:05:20Z", "value" => "0"} [2026-06-17 09:02:07.862] [DEBUG] QUERY OK db=22.7ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05:20Z", "0", 39129, "mobile_data_mb", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304261, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:02:07.864] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T17:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 09:02:07.883] [DEBUG] QUERY OK db=18.6ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., 39129, "installed_apps", ~N[2026-06-17 09:02:07], ~N[2026-06-17 09:02:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:02:07.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304262, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T17:05:20Z", message: nil, status_log_id: 39129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:02:07], updated_at: ~N[2026-06-17 09:02:07]}} [2026-06-17 09:05:30.614] [INFO ] Running offline device check... [2026-06-17 09:05:30.614] [INFO ] Starting offline device check... [2026-06-17 09:05:30.616] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=841.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:679 [2026-06-17 09:05:30.627] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=756.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:694 [2026-06-17 09:05:30.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.643] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.647] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.654] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.665] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.678] [DEBUG] QUERY OK source="tms_terminals" db=12.7ms queue=0.1ms idle=10.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:05:30], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 09:05:30.678] [INFO ] Terminal 98251226730002 back online [2026-06-17 09:05:30.686] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.6ms idle=13.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:694 [2026-06-17 09:05:30.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.693] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.4ms queue=0.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.730] [DEBUG] QUERY OK source="tms_terminals" db=20.9ms queue=0.1ms idle=15.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:05:30], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 09:05:30.730] [INFO ] Terminal 98250623730001 back online [2026-06-17 09:05:30.733] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=22.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:694 [2026-06-17 09:05:30.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.9ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.742] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.765] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=20.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.767] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.783] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.786] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.790] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms 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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.791] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.792] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.794] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.794] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.796] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.798] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:05:30.798] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 09:05:30.799] [INFO ] Offline device check completed successfully [2026-06-17 09:08:13.430] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 09:08:13.431] [INFO ] Incoming JSON payload: {"oid":"2863d186-7eef-44e1-8dcd-186d0a5c3ebf","sn":"98251226730001","uploadTime":"2026-06-17T17:11:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"ram_free_mb","value":"912","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T17:11:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T17:11: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 09:08:13.433] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2863d186-7eef-44e1-8dcd-186d0a5c3ebf", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T17:11:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T17:11:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T17:11:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T17:11:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T17:11:25Z", "value" => "912"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T17:11:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T17:11:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T17:11:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T17:11:25Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T17:11:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T17:11: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T17:11:25Z", "vendor" => "morefun"} [2026-06-17 09:08:13.433] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 09:08:13.433] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 09:08:13.433] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 09:08:13.434] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1031.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-06-17 09:08:13.435] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=29.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.`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-06-17 09:08:13.435] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 09:08:13.436] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 09:08:13.436] [INFO ] Terminal updated: 98251226730001 [2026-06-17 09:08:13.469] [DEBUG] QUERY OK source="tms_terminals" db=32.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 09:08:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 09:08:13.469] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 09:08:13.470] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 09:08:13.484] [DEBUG] QUERY OK source="tms_terminals" db=13.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:08:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 09:08:13.501] [DEBUG] QUERY OK db=16.6ms idle=13.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2863d186-7eef-44e1-8dcd-186d0a5c3ebf", "2026-06-17T17:11:25Z", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 09:08:13.501] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39130, oid: "2863d186-7eef-44e1-8dcd-186d0a5c3ebf", upload_time: "2026-06-17T17:11:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]} [2026-06-17 09:08:13.501] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T17:11:25Z", "value" => "morefun"} [2026-06-17 09:08:13.524] [DEBUG] QUERY OK db=22.4ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "morefun", 39130, "vendor", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304263, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.524] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T17:11:25Z", "value" => "kiosk_launcher"} [2026-06-17 09:08:13.553] [DEBUG] QUERY OK db=28.5ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "kiosk_launcher", 39130, "model", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304264, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.554] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T17:11:25Z", "value" => "1.0"} [2026-06-17 09:08:13.568] [DEBUG] QUERY OK db=14.0ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "1.0", 39130, "app_version", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304265, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.568] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T17:11:25Z", "value" => "13"} [2026-06-17 09:08:13.581] [DEBUG] QUERY OK db=11.8ms queue=0.1ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "13", 39130, "android_version", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304266, itemkey: "android_version", value: "13", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.581] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T17:11:25Z", "value" => "912"} [2026-06-17 09:08:13.613] [DEBUG] QUERY OK db=31.8ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "912", 39130, "ram_free_mb", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304267, itemkey: "ram_free_mb", value: "912", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.614] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T17:11:25Z", "value" => "WIFI"} [2026-06-17 09:08:13.640] [DEBUG] QUERY OK db=25.5ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "WIFI", 39130, "network_type", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304268, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.641] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T17:11:25Z", "value" => "true"} [2026-06-17 09:08:13.662] [DEBUG] QUERY OK db=21.0ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "true", 39130, "kiosk_active", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304269, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.663] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T17:11:25Z", "value" => ""} [2026-06-17 09:08:13.675] [DEBUG] QUERY OK db=11.4ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T17:11:25Z", 39130, "sim_operator", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304270, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.676] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"} [2026-06-17 09:08:13.695] [DEBUG] QUERY OK db=19.5ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "UNKNOWN", 39130, "sim_number", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304271, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.696] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"} [2026-06-17 09:08:13.720] [DEBUG] QUERY OK db=24.2ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "UNKNOWN", 39130, "sim_iccid", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304272, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.721] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"} [2026-06-17 09:08:13.752] [DEBUG] QUERY OK db=30.8ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "UNKNOWN", 39130, "sim_imsi", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304273, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.753] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"} [2026-06-17 09:08:13.766] [DEBUG] QUERY OK db=13.0ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "UNKNOWN", 39130, "sim_iccid2", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304274, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.766] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T17:11:25Z", "value" => "UNKNOWN"} [2026-06-17 09:08:13.777] [DEBUG] QUERY OK db=10.6ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "UNKNOWN", 39130, "sim_imsi2", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304275, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.778] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T17:11:25Z", "value" => "5"} [2026-06-17 09:08:13.795] [DEBUG] QUERY OK db=16.9ms idle=12.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "5", 39130, "data_usage_mb", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304276, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.795] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T17:11:25Z", "value" => "0"} [2026-06-17 09:08:13.818] [DEBUG] QUERY OK db=22.3ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11:25Z", "0", 39130, "mobile_data_mb", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304277, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:08:13.819] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T17:11: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 09:08:13.849] [DEBUG] QUERY OK db=28.6ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:11: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., 39130, "installed_apps", ~N[2026-06-17 09:08:13], ~N[2026-06-17 09:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:08:13.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304278, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T17:11:25Z", message: nil, status_log_id: 39130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:08:13], updated_at: ~N[2026-06-17 09:08:13]}} [2026-06-17 09:09:03.587] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 38µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "RTEMHTo8QTd4bFoAJQoWAgEPZDthHQ0euffmXH-NOU6qoCNgNhSXXQJv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 09:09:07.052] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 09:09:07.054] [DEBUG] QUERY OK source="users_tokens" db=0.8ms idle=252.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 09:09:07.052665Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 09:09:07.055] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1259.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 09:09:07.056] [DEBUG] QUERY OK source="app_packages" db=0.4ms idle=466.4ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 09:09:07.057] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 09:09:07.057] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 09:09:07.058] [DEBUG] Replied in 5ms [2026-06-17 09:09:07.058] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 09:09:07.058] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 09:09:07.059] [DEBUG] Replied in 1ms [2026-06-17 09:10:28.611] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 09:10:28.612] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=1761.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-06-17 09:10:28.613] [DEBUG] QUERY OK source="filter_usage" db=0.7ms idle=759.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-06-17 09:10:28.614] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 09:10:30.800] [INFO ] Running offline device check... [2026-06-17 09:10:30.800] [INFO ] Starting offline device check... [2026-06-17 09:10:30.801] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1004.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:679 [2026-06-17 09:10:30.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=944.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:694 [2026-06-17 09:10:30.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.812] [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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.813] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.813] [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:694 [2026-06-17 09:10:30.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms 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:694 [2026-06-17 09:10:30.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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.816] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.817] [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:694 [2026-06-17 09:10:30.818] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.851] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:10:30], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 09:10:30.851] [INFO ] Terminal 98251226730002 back online [2026-06-17 09:10:30.855] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=23.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:694 [2026-06-17 09:10:30.856] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.857] [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:694 [2026-06-17 09:10:30.857] [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:694 [2026-06-17 09:10:30.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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:694 [2026-06-17 09:10:30.897] [DEBUG] QUERY OK source="tms_terminals" db=31.6ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:10:30], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 09:10:30.897] [INFO ] Terminal 98250623730001 back online [2026-06-17 09:10:30.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=32.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:694 [2026-06-17 09:10:30.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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:694 [2026-06-17 09:10:30.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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:694 [2026-06-17 09:10:30.904] [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:694 [2026-06-17 09:10:30.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.915] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=10.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:694 [2026-06-17 09:10:30.916] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.922] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.924] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.926] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.930] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.931] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.932] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.933] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.935] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.935] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.936] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 09:10:30.936] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 09:10:30.936] [INFO ] Offline device check completed successfully [2026-06-17 09:11:12.429] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 09:11:12.429] [INFO ] Incoming JSON payload: {"oid":"3a7d367a-1165-4681-adc3-2e967f9edb08","sn":"98251226730002","uploadTime":"2026-06-17T09:10:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"ram_free_mb","value":"815","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"data_usage_mb","value":"2","timestamp":"2026-06-17T09:10:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T09:10:22Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 09:11:12.430] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3a7d367a-1165-4681-adc3-2e967f9edb08", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T09:10:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T09:10:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T09:10:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T09:10:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T09:10:22Z", "value" => "815"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T09:10:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T09:10:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T09:10:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T09:10:22Z", "value" => "2"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T09:10:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T09:10:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T09:10:22Z", "vendor" => "morefun"} [2026-06-17 09:11:12.430] [INFO ] Extracted versions for 98251226730002: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 09:11:12.430] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 09:11:12.430] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 09:11:12.431] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=629.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-06-17 09:11:12.432] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=440.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.`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-06-17 09:11:12.432] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 09:11:12.432] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 09:11:12.491] [DEBUG] QUERY OK source="tms_terminals" db=15.6ms queue=42.2ms idle=0.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 09:11:12], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 09:11:12.491] [INFO ] Terminal updated: 98251226730002 [2026-06-17 09:11:12.491] [INFO ] Event published: terminal_updated [2026-06-17 09:11:12.491] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 09:11:12.491] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 09:11:12.491] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 09:11:12.493] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms queue=0.4ms idle=58.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-06-17 09:11:12], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 09:11:12.495] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.2ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 09:11:12.496] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms 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-06-17 09:11:12.496] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 09:11:12.558] [DEBUG] QUERY OK source="tms_terminals" db=22.5ms queue=42.0ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 09:11:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 09:11:12.558] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 09:11:12.560] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=63.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 09:11:12.639] [DEBUG] QUERY OK source="tms_terminals" db=36.6ms queue=42.4ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:11:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 09:11:12.657] [DEBUG] QUERY OK db=17.6ms idle=80.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3a7d367a-1165-4681-adc3-2e967f9edb08", "2026-06-17T09:10:22Z", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 09:11:12.658] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39131, oid: "3a7d367a-1165-4681-adc3-2e967f9edb08", upload_time: "2026-06-17T09:10:22Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]} [2026-06-17 09:11:12.658] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T09:10:22Z", "value" => "morefun"} [2026-06-17 09:11:12.679] [DEBUG] QUERY OK db=20.8ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "morefun", 39131, "vendor", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304279, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.679] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T09:10:22Z", "value" => "kiosk_launcher"} [2026-06-17 09:11:12.703] [DEBUG] QUERY OK db=23.4ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "kiosk_launcher", 39131, "model", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304280, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.704] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T09:10:22Z", "value" => "1.0"} [2026-06-17 09:11:12.738] [DEBUG] QUERY OK db=33.7ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "1.0", 39131, "app_version", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304281, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.739] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T09:10:22Z", "value" => "13"} [2026-06-17 09:11:12.762] [DEBUG] QUERY OK db=23.0ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "13", 39131, "android_version", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304282, itemkey: "android_version", value: "13", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.763] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T09:10:22Z", "value" => "815"} [2026-06-17 09:11:12.777] [DEBUG] QUERY OK db=13.7ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "815", 39131, "ram_free_mb", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304283, itemkey: "ram_free_mb", value: "815", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.777] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T09:10:22Z", "value" => "WIFI"} [2026-06-17 09:11:12.801] [DEBUG] QUERY OK db=23.2ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "WIFI", 39131, "network_type", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304284, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.801] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T09:10:22Z", "value" => "true"} [2026-06-17 09:11:12.835] [DEBUG] QUERY OK db=33.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "true", 39131, "kiosk_active", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304285, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.835] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T09:10:22Z", "value" => ""} [2026-06-17 09:11:12.858] [DEBUG] QUERY OK db=22.9ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T09:10:22Z", 39131, "sim_operator", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304286, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.859] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"} [2026-06-17 09:11:12.873] [DEBUG] QUERY OK db=13.6ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "UNKNOWN", 39131, "sim_number", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304287, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.873] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"} [2026-06-17 09:11:12.887] [DEBUG] QUERY OK db=13.5ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "UNKNOWN", 39131, "sim_iccid", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304288, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.887] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"} [2026-06-17 09:11:12.910] [DEBUG] QUERY OK db=22.6ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "UNKNOWN", 39131, "sim_imsi", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304289, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.910] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"} [2026-06-17 09:11:12.934] [DEBUG] QUERY OK db=23.2ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "UNKNOWN", 39131, "sim_iccid2", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304290, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.934] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T09:10:22Z", "value" => "UNKNOWN"} [2026-06-17 09:11:12.958] [DEBUG] QUERY OK db=22.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "UNKNOWN", 39131, "sim_imsi2", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304291, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.958] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T09:10:22Z", "value" => "2"} [2026-06-17 09:11:12.982] [DEBUG] QUERY OK db=23.2ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "2", 39131, "data_usage_mb", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:12.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304292, itemkey: "data_usage_mb", value: "2", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:12.982] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T09:10:22Z", "value" => "0"} [2026-06-17 09:11:13.003] [DEBUG] QUERY OK db=20.4ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "0", 39131, "mobile_data_mb", ~N[2026-06-17 09:11:12], ~N[2026-06-17 09:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:13.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304293, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:12], updated_at: ~N[2026-06-17 09:11:12]}} [2026-06-17 09:11:13.004] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T09:10:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 09:11:13.037] [DEBUG] QUERY OK db=31.7ms idle=10.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T09:10:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., 39131, "installed_apps", ~N[2026-06-17 09:11:13], ~N[2026-06-17 09:11:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:13.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304294, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T09:10:22Z", message: nil, status_log_id: 39131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:13], updated_at: ~N[2026-06-17 09:11:13]}} [2026-06-17 09:11:13.039] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=34.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 09:11:13.042] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 09:11:55.263] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 09:11:55.263] [INFO ] Incoming JSON payload: {"oid":"f92ca9c3-a731-490e-a1b7-4b648c12bc67","sn":"98251226730001","uploadTime":"2026-06-17T17:15:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"data_usage_mb","value":"5","timestamp":"2026-06-17T17:15:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T17:15:00Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 09:11:55.265] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f92ca9c3-a731-490e-a1b7-4b648c12bc67", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T17:15:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T17:15:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T17:15:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T17:15:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T17:15:00Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T17:15:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T17:15:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T17:15:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T17:15:00Z", "value" => "5"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T17:15:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T17:15:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T17:15:00Z", "vendor" => "morefun"} [2026-06-17 09:11:55.265] [INFO ] Extracted versions for 98251226730001: %{application: nil, parameter_config: nil, emv_config: nil, keys_config: nil} [2026-06-17 09:11:55.265] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 09:11:55.265] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 09:11:55.272] [DEBUG] QUERY OK source="parameter_templates" db=5.8ms queue=0.1ms idle=456.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-06-17 09:11:55.272] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=167.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-06-17 09:11:55.273] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 09:11:55.273] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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:98 [2026-06-17 09:11:55.274] [INFO ] Terminal updated: 98251226730001 [2026-06-17 09:11:55.349] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms queue=41.7ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 09:11:55], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 09:11:55.349] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 09:11:55.350] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=76.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:629 [2026-06-17 09:11:55.374] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms queue=0.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 09:11:55], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 09:11:55.402] [DEBUG] QUERY OK db=27.7ms idle=24.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f92ca9c3-a731-490e-a1b7-4b648c12bc67", "2026-06-17T17:15:00Z", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 09:11:55.403] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39132, oid: "f92ca9c3-a731-490e-a1b7-4b648c12bc67", upload_time: "2026-06-17T17:15:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]} [2026-06-17 09:11:55.403] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T17:15:00Z", "value" => "morefun"} [2026-06-17 09:11:55.420] [DEBUG] QUERY OK db=16.9ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "morefun", 39132, "vendor", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304295, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.420] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T17:15:00Z", "value" => "kiosk_launcher"} [2026-06-17 09:11:55.443] [DEBUG] QUERY OK db=22.6ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "kiosk_launcher", 39132, "model", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304296, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.444] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T17:15:00Z", "value" => "1.0"} [2026-06-17 09:11:55.468] [DEBUG] QUERY OK db=23.5ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "1.0", 39132, "app_version", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304297, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.468] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T17:15:00Z", "value" => "13"} [2026-06-17 09:11:55.496] [DEBUG] QUERY OK db=27.5ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "13", 39132, "android_version", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304298, itemkey: "android_version", value: "13", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.496] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T17:15:00Z", "value" => "919"} [2026-06-17 09:11:55.523] [DEBUG] QUERY OK db=26.2ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "919", 39132, "ram_free_mb", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304299, itemkey: "ram_free_mb", value: "919", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.523] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T17:15:00Z", "value" => "WIFI"} [2026-06-17 09:11:55.536] [DEBUG] QUERY OK db=12.7ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "WIFI", 39132, "network_type", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304300, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.537] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T17:15:00Z", "value" => "true"} [2026-06-17 09:11:55.561] [DEBUG] QUERY OK db=23.8ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "true", 39132, "kiosk_active", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304301, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.561] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T17:15:00Z", "value" => ""} [2026-06-17 09:11:55.596] [DEBUG] QUERY OK db=34.5ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T17:15:00Z", 39132, "sim_operator", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304302, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.597] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"} [2026-06-17 09:11:55.620] [DEBUG] QUERY OK db=22.3ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "UNKNOWN", 39132, "sim_number", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304303, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.620] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"} [2026-06-17 09:11:55.640] [DEBUG] QUERY OK db=19.3ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "UNKNOWN", 39132, "sim_iccid", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304304, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.640] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"} [2026-06-17 09:11:55.658] [DEBUG] QUERY OK db=17.2ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "UNKNOWN", 39132, "sim_imsi", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304305, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.658] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"} [2026-06-17 09:11:55.681] [DEBUG] QUERY OK db=22.6ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "UNKNOWN", 39132, "sim_iccid2", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304306, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.682] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T17:15:00Z", "value" => "UNKNOWN"} [2026-06-17 09:11:55.708] [DEBUG] QUERY OK db=26.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "UNKNOWN", 39132, "sim_imsi2", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304307, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.709] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T17:15:00Z", "value" => "5"} [2026-06-17 09:11:55.733] [DEBUG] QUERY OK db=23.3ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "5", 39132, "data_usage_mb", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304308, itemkey: "data_usage_mb", value: "5", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.733] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T17:15:00Z", "value" => "0"} [2026-06-17 09:11:55.752] [DEBUG] QUERY OK db=18.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "0", 39132, "mobile_data_mb", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304309, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.753] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T17:15:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 09:11:55.779] [DEBUG] QUERY OK db=24.9ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`status_log_id`,`itemkey`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T17:15:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., 39132, "installed_apps", ~N[2026-06-17 09:11:55], ~N[2026-06-17 09:11:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 09:11:55.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 304310, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T17:15:00Z", message: nil, status_log_id: 39132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 09:11:55], updated_at: ~N[2026-06-17 09:11:55]}} [2026-06-17 09:11:55.784] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 09:11:55.790] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-11 06:13:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 09:14:13.446] [DEBUG] HANDLE EVENT "set_status_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"status" => "online", "value" => ""} [2026-06-17 09:14:13.448] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.1ms idle=1604.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:492 [2026-06-17 09:14:13.448] [DEBUG] Replied in 2ms [2026-06-17 09:14:14.158] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 09:14:14.158] [INFO ] Incoming JSON payload: {"oid":"2d13dc00-3dfa-4575-8c20-b4fd8ab0f7b3","sn":"98251226730002","uploadTime":"2026-06-17T09:13:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"ram_free_mb","value":"878","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"data_usage_mb","value":"2","timestamp":"2026-06-17T09:13:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T09:13:23Z"},{"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.androi[2026-06-17 10:50:14.050] [INFO ] [Ysp.Scheduler] Started. SFTP in 16h 9m, MIS in 20h 9m [2026-06-17 10:50:14.146] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 10:50:14.165] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 10:50:16.820] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 10:50:16.824] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 10:50:16.825] [INFO ] Building initial filter cache... [2026-06-17 10:50:16.844] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.1ms idle=1396.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-06-17 10:50:16.861] [DEBUG] QUERY OK source="filter_usage" db=1.1ms queue=2.3ms idle=406.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-06-17 10:50:16.861] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 10:50:17.046] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 10:50:17.104] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 10:50:17.135] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 10:50:19.384] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 39µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "XDhbQBcyOyBoUBgTDHsvKn0mcBZYIzc3lo10uFWY_itbF2wO2AGuaop_", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "2", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 10:50:19.621] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:50:19.621] [INFO ] Incoming JSON payload: {"oid":"8ff867e0-e1ea-42f6-9330-1680a66cdf92","sn":"98251226730002","uploadTime":"2026-06-17T10:49:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"ram_free_mb","value":"746","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:49:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:49:29Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:50:19.622] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8ff867e0-e1ea-42f6-9330-1680a66cdf92", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:29Z", "value" => "746"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:29Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:49:29Z", "vendor" => "morefun"} [2026-06-17 10:50:19.622] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:50:19.725] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:50:19.725] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:50:19.740] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.4ms idle=1278.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-06-17 10:50:19.742] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.6ms idle=274.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.`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-06-17 10:50:19.743] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:50:19.801] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=59.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:50:19.882] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:50:19.963] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms queue=0.5ms idle=142.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:50:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:50:19.993] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:50:20.000] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms queue=0.1ms idle=194.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:50:20.045] [DEBUG] QUERY OK source="tms_terminals" db=22.6ms queue=0.6ms idle=113.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:50:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:50:20.103] [DEBUG] QUERY OK db=21.0ms queue=1.6ms idle=79.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8ff867e0-e1ea-42f6-9330-1680a66cdf92", "2026-06-17T10:49:29Z", ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:50:20.167] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39186, oid: "8ff867e0-e1ea-42f6-9330-1680a66cdf92", upload_time: "2026-06-17T10:49:29Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]} [2026-06-17 10:50:20.167] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:29Z", "value" => "morefun"} [2026-06-17 10:50:20.195] [DEBUG] QUERY OK db=25.8ms queue=2.0ms idle=122.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "morefun", "vendor", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305111, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.196] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:29Z", "value" => "kiosk_launcher"} [2026-06-17 10:50:20.225] [DEBUG] QUERY OK db=27.6ms queue=1.3ms idle=93.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "kiosk_launcher", "model", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305112, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.225] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:29Z", "value" => "1.0"} [2026-06-17 10:50:20.258] [DEBUG] QUERY OK db=32.2ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "1.0", "app_version", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305113, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.259] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:29Z", "value" => "13"} [2026-06-17 10:50:20.290] [DEBUG] QUERY OK db=30.0ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "13", "android_version", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305114, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.298] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:29Z", "value" => "746"} [2026-06-17 10:50:20.325] [DEBUG] QUERY OK db=26.4ms queue=0.1ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "746", "ram_free_mb", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305115, itemkey: "ram_free_mb", value: "746", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.325] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:29Z", "value" => "WIFI"} [2026-06-17 10:50:20.363] [DEBUG] QUERY OK db=36.8ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "WIFI", "network_type", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305116, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.366] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:29Z", "value" => "true"} [2026-06-17 10:50:20.379] [DEBUG] QUERY OK db=12.8ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "true", "kiosk_active", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305117, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.383] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:29Z", "value" => ""} [2026-06-17 10:50:20.451] [DEBUG] QUERY OK db=47.6ms queue=11.8ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:49:29Z", "sim_operator", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305118, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.457] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"} [2026-06-17 10:50:20.483] [DEBUG] QUERY OK db=26.3ms idle=78.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "UNKNOWN", "sim_number", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305119, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.484] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"} [2026-06-17 10:50:20.535] [DEBUG] QUERY OK db=21.9ms queue=0.8ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "UNKNOWN", "sim_iccid", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305120, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.560] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"} [2026-06-17 10:50:20.584] [DEBUG] QUERY OK db=24.2ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "UNKNOWN", "sim_imsi", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305121, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.585] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"} [2026-06-17 10:50:20.615] [DEBUG] QUERY OK db=29.5ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "UNKNOWN", "sim_iccid2", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305122, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.615] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:29Z", "value" => "UNKNOWN"} [2026-06-17 10:50:20.644] [DEBUG] QUERY OK db=28.1ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "UNKNOWN", "sim_imsi2", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305123, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.644] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:29Z", "value" => "6"} [2026-06-17 10:50:20.702] [DEBUG] QUERY OK db=47.6ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "6", "data_usage_mb", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305124, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.702] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:29Z", "value" => "0"} [2026-06-17 10:50:20.746] [DEBUG] QUERY OK db=43.6ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "0", "mobile_data_mb", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305125, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:20.748] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:50:20.791] [DEBUG] QUERY OK db=29.6ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39186, ~N[2026-06-17 10:50:20], ~N[2026-06-17 10:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:20.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305126, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:49:29Z", message: nil, status_log_id: 39186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:20], updated_at: ~N[2026-06-17 10:50:20]}} [2026-06-17 10:50:21.355] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 10:50:21.484] [DEBUG] QUERY OK source="users_tokens" db=0.4ms queue=0.8ms idle=875.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 10:50:21.469248Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 10:50:21.497] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.8ms idle=748.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 10:50:21.513] [DEBUG] QUERY OK source="app_packages" db=1.1ms queue=3.1ms idle=731.7ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 10:50:21.554] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.6ms idle=39.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 10:50:21.583] [DEBUG] QUERY OK source="terminal_groups" db=2.6ms queue=11.6ms idle=34.7ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 10:50:21.583] [DEBUG] Replied in 233ms [2026-06-17 10:50:21.655] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 10:50:21.685] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=100.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 10:50:21.691] [DEBUG] Replied in 36ms [2026-06-17 10:50:25.694] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:50:25.695] [INFO ] Incoming JSON payload: {"oid":"d346641f-c294-40ca-ae2c-389d5d508b81","sn":"98251226730002","uploadTime":"2026-06-17T10:49:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"ram_free_mb","value":"747","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:49:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:49:35Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:50:25.699] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d346641f-c294-40ca-ae2c-389d5d508b81", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:35Z", "value" => "747"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:35Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:49:35Z", "vendor" => "morefun"} [2026-06-17 10:50:25.699] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:50:25.700] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:50:25.700] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:50:25.705] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=534.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-06-17 10:50:25.707] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=135.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.`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-06-17 10:50:25.707] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:50:25.714] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:50:25.714] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:50:25.751] [DEBUG] QUERY OK source="tms_terminals" db=37.0ms idle=6.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:50:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:50:25.751] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:50:25.753] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:50:25.769] [DEBUG] QUERY OK source="tms_terminals" db=15.2ms queue=0.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:50:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:50:25.805] [DEBUG] QUERY OK db=27.5ms queue=0.5ms idle=16.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d346641f-c294-40ca-ae2c-389d5d508b81", "2026-06-17T10:49:35Z", ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:50:25.806] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39187, oid: "d346641f-c294-40ca-ae2c-389d5d508b81", upload_time: "2026-06-17T10:49:35Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]} [2026-06-17 10:50:25.806] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:35Z", "value" => "morefun"} [2026-06-17 10:50:25.834] [DEBUG] QUERY OK db=26.1ms queue=1.3ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "morefun", "vendor", 39187, ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:25.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305127, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]}} [2026-06-17 10:50:25.834] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:35Z", "value" => "kiosk_launcher"} [2026-06-17 10:50:25.859] [DEBUG] QUERY OK db=21.8ms queue=2.8ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "kiosk_launcher", "model", 39187, ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:25.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305128, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]}} [2026-06-17 10:50:25.859] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:35Z", "value" => "1.0"} [2026-06-17 10:50:25.877] [DEBUG] QUERY OK db=17.6ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "1.0", "app_version", 39187, ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:25.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305129, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]}} [2026-06-17 10:50:25.880] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:35Z", "value" => "13"} [2026-06-17 10:50:25.902] [DEBUG] QUERY OK db=21.4ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "13", "android_version", 39187, ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:25.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305130, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]}} [2026-06-17 10:50:25.902] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:35Z", "value" => "747"} [2026-06-17 10:50:25.936] [DEBUG] QUERY OK db=33.2ms queue=0.4ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "747", "ram_free_mb", 39187, ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:25.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305131, itemkey: "ram_free_mb", value: "747", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]}} [2026-06-17 10:50:25.937] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:35Z", "value" => "WIFI"} [2026-06-17 10:50:25.965] [DEBUG] QUERY OK db=24.0ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "WIFI", "network_type", 39187, ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:25.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305132, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]}} [2026-06-17 10:50:25.965] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:35Z", "value" => "true"} [2026-06-17 10:50:25.980] [DEBUG] QUERY OK db=12.2ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "true", "kiosk_active", 39187, ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:25.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305133, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]}} [2026-06-17 10:50:25.980] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:35Z", "value" => ""} [2026-06-17 10:50:26.009] [DEBUG] QUERY OK db=27.8ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:49:35Z", "sim_operator", 39187, ~N[2026-06-17 10:50:25], ~N[2026-06-17 10:50:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305134, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:25], updated_at: ~N[2026-06-17 10:50:25]}} [2026-06-17 10:50:26.010] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"} [2026-06-17 10:50:26.046] [DEBUG] QUERY OK db=35.6ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "UNKNOWN", "sim_number", 39187, ~N[2026-06-17 10:50:26], ~N[2026-06-17 10:50:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.046] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305135, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:26], updated_at: ~N[2026-06-17 10:50:26]}} [2026-06-17 10:50:26.046] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"} [2026-06-17 10:50:26.065] [DEBUG] QUERY OK db=18.6ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "UNKNOWN", "sim_iccid", 39187, ~N[2026-06-17 10:50:26], ~N[2026-06-17 10:50:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305136, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:26], updated_at: ~N[2026-06-17 10:50:26]}} [2026-06-17 10:50:26.066] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"} [2026-06-17 10:50:26.093] [DEBUG] QUERY OK db=25.0ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "UNKNOWN", "sim_imsi", 39187, ~N[2026-06-17 10:50:26], ~N[2026-06-17 10:50:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305137, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:26], updated_at: ~N[2026-06-17 10:50:26]}} [2026-06-17 10:50:26.094] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"} [2026-06-17 10:50:26.129] [DEBUG] QUERY OK db=35.3ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "UNKNOWN", "sim_iccid2", 39187, ~N[2026-06-17 10:50:26], ~N[2026-06-17 10:50:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305138, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:26], updated_at: ~N[2026-06-17 10:50:26]}} [2026-06-17 10:50:26.130] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:35Z", "value" => "UNKNOWN"} [2026-06-17 10:50:26.154] [DEBUG] QUERY OK db=23.3ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "UNKNOWN", "sim_imsi2", 39187, ~N[2026-06-17 10:50:26], ~N[2026-06-17 10:50:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305139, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:26], updated_at: ~N[2026-06-17 10:50:26]}} [2026-06-17 10:50:26.154] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:35Z", "value" => "6"} [2026-06-17 10:50:26.172] [DEBUG] QUERY OK db=17.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "6", "data_usage_mb", 39187, ~N[2026-06-17 10:50:26], ~N[2026-06-17 10:50:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305140, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:26], updated_at: ~N[2026-06-17 10:50:26]}} [2026-06-17 10:50:26.175] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:35Z", "value" => "0"} [2026-06-17 10:50:26.208] [DEBUG] QUERY OK db=30.7ms queue=2.0ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "0", "mobile_data_mb", 39187, ~N[2026-06-17 10:50:26], ~N[2026-06-17 10:50:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305141, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:26], updated_at: ~N[2026-06-17 10:50:26]}} [2026-06-17 10:50:26.209] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:50:26.242] [DEBUG] QUERY OK db=31.9ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39187, ~N[2026-06-17 10:50:26], ~N[2026-06-17 10:50:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:26.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305142, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:49:35Z", message: nil, status_log_id: 39187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:26], updated_at: ~N[2026-06-17 10:50:26]}} [2026-06-17 10:50:26.247] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms idle=34.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:26.256] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data_ (truncated) [2026-06-17 10:50:31.771] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:50:31.771] [INFO ] Incoming JSON payload: {"oid":"dd5febe8-eed7-4dce-9d38-1dceb12eeb9d","sn":"98251226730002","uploadTime":"2026-06-17T10:49:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"ram_free_mb","value":"746","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:49:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:49:41Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:50:31.773] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dd5febe8-eed7-4dce-9d38-1dceb12eeb9d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:41Z", "value" => "746"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:41Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:49:41Z", "vendor" => "morefun"} [2026-06-17 10:50:31.773] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:50:31.773] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:50:31.773] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:50:31.775] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.1ms idle=594.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-06-17 10:50:31.776] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=179.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-06-17 10:50:31.776] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:50:31.778] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.1ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:50:31.779] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:50:31.809] [DEBUG] QUERY OK source="tms_terminals" db=28.8ms queue=0.7ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:50:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:50:31.809] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:50:31.811] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:50:31.828] [DEBUG] QUERY OK source="tms_terminals" db=16.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:50:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:50:31.848] [DEBUG] QUERY OK db=18.2ms queue=0.6ms idle=17.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "dd5febe8-eed7-4dce-9d38-1dceb12eeb9d", "2026-06-17T10:49:41Z", ~N[2026-06-17 10:50:31], ~N[2026-06-17 10:50:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:50:31.848] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39188, oid: "dd5febe8-eed7-4dce-9d38-1dceb12eeb9d", upload_time: "2026-06-17T10:49:41Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:31], updated_at: ~N[2026-06-17 10:50:31]} [2026-06-17 10:50:31.848] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:41Z", "value" => "morefun"} [2026-06-17 10:50:31.870] [DEBUG] QUERY OK db=21.8ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "morefun", "vendor", 39188, ~N[2026-06-17 10:50:31], ~N[2026-06-17 10:50:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:31.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305143, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:31], updated_at: ~N[2026-06-17 10:50:31]}} [2026-06-17 10:50:31.870] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:41Z", "value" => "kiosk_launcher"} [2026-06-17 10:50:31.895] [DEBUG] QUERY OK db=24.4ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "kiosk_launcher", "model", 39188, ~N[2026-06-17 10:50:31], ~N[2026-06-17 10:50:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:31.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305144, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:31], updated_at: ~N[2026-06-17 10:50:31]}} [2026-06-17 10:50:31.895] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:41Z", "value" => "1.0"} [2026-06-17 10:50:31.919] [DEBUG] QUERY OK db=23.2ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "1.0", "app_version", 39188, ~N[2026-06-17 10:50:31], ~N[2026-06-17 10:50:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:31.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305145, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:31], updated_at: ~N[2026-06-17 10:50:31]}} [2026-06-17 10:50:31.919] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:41Z", "value" => "13"} [2026-06-17 10:50:31.939] [DEBUG] QUERY OK db=18.7ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "13", "android_version", 39188, ~N[2026-06-17 10:50:31], ~N[2026-06-17 10:50:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:31.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305146, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:31], updated_at: ~N[2026-06-17 10:50:31]}} [2026-06-17 10:50:31.941] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:41Z", "value" => "746"} [2026-06-17 10:50:31.962] [DEBUG] QUERY OK db=19.7ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "746", "ram_free_mb", 39188, ~N[2026-06-17 10:50:31], ~N[2026-06-17 10:50:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:31.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305147, itemkey: "ram_free_mb", value: "746", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:31], updated_at: ~N[2026-06-17 10:50:31]}} [2026-06-17 10:50:31.967] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:41Z", "value" => "WIFI"} [2026-06-17 10:50:31.996] [DEBUG] QUERY OK db=29.1ms queue=0.1ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "WIFI", "network_type", 39188, ~N[2026-06-17 10:50:31], ~N[2026-06-17 10:50:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:31.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305148, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:31], updated_at: ~N[2026-06-17 10:50:31]}} [2026-06-17 10:50:31.998] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:41Z", "value" => "true"} [2026-06-17 10:50:32.033] [DEBUG] QUERY OK db=33.0ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "true", "kiosk_active", 39188, ~N[2026-06-17 10:50:31], ~N[2026-06-17 10:50:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305149, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:31], updated_at: ~N[2026-06-17 10:50:31]}} [2026-06-17 10:50:32.033] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:41Z", "value" => ""} [2026-06-17 10:50:32.071] [DEBUG] QUERY OK db=35.0ms queue=2.1ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:49:41Z", "sim_operator", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305150, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.071] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"} [2026-06-17 10:50:32.106] [DEBUG] QUERY OK db=33.6ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "UNKNOWN", "sim_number", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305151, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.108] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"} [2026-06-17 10:50:32.151] [DEBUG] QUERY OK db=42.9ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "UNKNOWN", "sim_iccid", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305152, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.152] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"} [2026-06-17 10:50:32.187] [DEBUG] QUERY OK db=35.1ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "UNKNOWN", "sim_imsi", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305153, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.188] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"} [2026-06-17 10:50:32.205] [DEBUG] QUERY OK db=16.5ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "UNKNOWN", "sim_iccid2", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305154, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.205] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:41Z", "value" => "UNKNOWN"} [2026-06-17 10:50:32.225] [DEBUG] QUERY OK db=18.4ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "UNKNOWN", "sim_imsi2", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305155, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.226] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:41Z", "value" => "6"} [2026-06-17 10:50:32.249] [DEBUG] QUERY OK db=23.2ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "6", "data_usage_mb", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305156, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.251] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:41Z", "value" => "0"} [2026-06-17 10:50:32.282] [DEBUG] QUERY OK db=30.6ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "0", "mobile_data_mb", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305157, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.283] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:50:32.299] [DEBUG] QUERY OK db=14.6ms queue=0.3ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39188, ~N[2026-06-17 10:50:32], ~N[2026-06-17 10:50:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:32.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305158, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:49:41Z", message: nil, status_log_id: 39188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:32], updated_at: ~N[2026-06-17 10:50:32]}} [2026-06-17 10:50:32.300] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=17.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:32.304] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data_ (truncated) [2026-06-17 10:50:33.767] [INFO ] GET /terminals [2026-06-17 10:50:33.813] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 10:50:33.829] [DEBUG] QUERY OK source="users_tokens" db=3.9ms idle=1208.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 10:50:33.824904Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 10:50:33.837] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.5ms idle=1237.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 10:50:33.841] [DEBUG] QUERY OK source="app_packages" db=1.0ms idle=237.4ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 10:50:33.842] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms idle=3.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 10:50:33.843] [DEBUG] QUERY OK source="terminal_groups" db=0.9ms idle=0.9ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 10:50:33.844] [DEBUG] QUERY OK source="tms_terminals" db=1.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 10:50:33.857] [INFO ] Sent 200 in 90ms [2026-06-17 10:50:38.130] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:50:38.130] [INFO ] Incoming JSON payload: {"oid":"6c3a1ba6-00a2-48d0-afbd-2c16420cf387","sn":"98251226730002","uploadTime":"2026-06-17T10:49:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"ram_free_mb","value":"747","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:49:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:49:47Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:50:38.133] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6c3a1ba6-00a2-48d0-afbd-2c16420cf387", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:47Z", "value" => "747"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:47Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:49:47Z", "vendor" => "morefun"} [2026-06-17 10:50:38.134] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:50:38.134] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:50:38.134] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:50:38.135] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=955.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-06-17 10:50:38.136] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=520.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-06-17 10:50:38.136] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:50:38.138] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.7ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:50:38.139] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:50:38.177] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:50:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:50:38.178] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:50:38.179] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=39.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:50:38.212] [DEBUG] QUERY OK source="tms_terminals" db=33.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:50:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:50:38.237] [DEBUG] QUERY OK db=24.7ms idle=33.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6c3a1ba6-00a2-48d0-afbd-2c16420cf387", "2026-06-17T10:49:47Z", ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:50:38.238] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39189, oid: "6c3a1ba6-00a2-48d0-afbd-2c16420cf387", upload_time: "2026-06-17T10:49:47Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]} [2026-06-17 10:50:38.239] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:47Z", "value" => "morefun"} [2026-06-17 10:50:38.283] [DEBUG] QUERY OK db=43.7ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "morefun", "vendor", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305159, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.283] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:47Z", "value" => "kiosk_launcher"} [2026-06-17 10:50:38.336] [DEBUG] QUERY OK db=51.8ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "kiosk_launcher", "model", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305160, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.336] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:47Z", "value" => "1.0"} [2026-06-17 10:50:38.366] [DEBUG] QUERY OK db=29.4ms queue=0.1ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "1.0", "app_version", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305161, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.367] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:47Z", "value" => "13"} [2026-06-17 10:50:38.411] [DEBUG] QUERY OK db=44.1ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "13", "android_version", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305162, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.413] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:47Z", "value" => "747"} [2026-06-17 10:50:38.438] [DEBUG] QUERY OK db=24.6ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "747", "ram_free_mb", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305163, itemkey: "ram_free_mb", value: "747", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.438] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:47Z", "value" => "WIFI"} [2026-06-17 10:50:38.456] [DEBUG] QUERY OK db=17.2ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "WIFI", "network_type", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305164, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.456] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:47Z", "value" => "true"} [2026-06-17 10:50:38.483] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 33µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 10:50:38.491] [DEBUG] QUERY OK db=35.0ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "true", "kiosk_active", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305165, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.492] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:47Z", "value" => ""} [2026-06-17 10:50:38.518] [DEBUG] QUERY OK db=25.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:49:47Z", "sim_operator", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305166, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.518] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"} [2026-06-17 10:50:38.537] [DEBUG] QUERY OK db=17.7ms queue=0.6ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "UNKNOWN", "sim_number", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305167, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.537] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"} [2026-06-17 10:50:38.551] [DEBUG] QUERY OK db=13.2ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "UNKNOWN", "sim_iccid", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305168, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.551] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"} [2026-06-17 10:50:38.577] [DEBUG] QUERY OK db=24.6ms queue=0.4ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "UNKNOWN", "sim_imsi", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305169, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.577] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"} [2026-06-17 10:50:38.601] [DEBUG] QUERY OK db=23.1ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "UNKNOWN", "sim_iccid2", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305170, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.601] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:47Z", "value" => "UNKNOWN"} [2026-06-17 10:50:38.622] [DEBUG] QUERY OK db=20.9ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "UNKNOWN", "sim_imsi2", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305171, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.623] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:47Z", "value" => "6"} [2026-06-17 10:50:38.637] [DEBUG] QUERY OK db=13.8ms queue=0.5ms idle=5.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "6", "data_usage_mb", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305172, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.638] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:47Z", "value" => "0"} [2026-06-17 10:50:38.656] [DEBUG] QUERY OK db=18.2ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "0", "mobile_data_mb", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305173, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.657] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:50:38.682] [DEBUG] QUERY OK db=23.8ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39189, ~N[2026-06-17 10:50:38], ~N[2026-06-17 10:50:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:38.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305174, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:49:47Z", message: nil, status_log_id: 39189, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:38], updated_at: ~N[2026-06-17 10:50:38]}} [2026-06-17 10:50:38.686] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=27.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:38.693] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data_ (truncated) [2026-06-17 10:50:38.844] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 10:50:38.845] [DEBUG] QUERY OK source="users_tokens" db=0.7ms queue=0.1ms idle=1227.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 10:50:38.844748Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 10:50:38.847] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 10:50:38.848] [DEBUG] QUERY OK source="app_packages" db=0.5ms idle=161.4ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 10:50:38.849] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 10:50:38.851] [DEBUG] QUERY OK source="terminal_groups" db=1.1ms idle=1.6ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 10:50:38.851] [DEBUG] Replied in 6ms [2026-06-17 10:50:38.852] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 10:50:38.853] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=2.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 10:50:38.854] [DEBUG] Replied in 2ms [2026-06-17 10:50:42.575] [DEBUG] HANDLE EVENT "set_status_tab" in PlatformWeb.TerminalLive.Index Parameters: %{"status" => "online", "value" => ""} [2026-06-17 10:50:42.577] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.1ms idle=930.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_event/3, at: lib/platform_web/live/terminal_live/index.ex:492 [2026-06-17 10:50:42.577] [DEBUG] Replied in 2ms [2026-06-17 10:50:44.226] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:50:44.226] [INFO ] Incoming JSON payload: {"oid":"a1132938-357a-48cf-ad06-b9737524b001","sn":"98251226730002","uploadTime":"2026-06-17T10:49:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"ram_free_mb","value":"744","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:49:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:49:54Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:50:44.227] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a1132938-357a-48cf-ad06-b9737524b001", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:54Z", "value" => "744"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:54Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:49:54Z", "vendor" => "morefun"} [2026-06-17 10:50:44.227] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:50:44.227] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:50:44.227] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:50:44.228] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=796.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-06-17 10:50:44.229] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=572.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-06-17 10:50:44.229] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:50:44.230] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:50:44.230] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:50:44.257] [DEBUG] QUERY OK source="tms_terminals" db=26.5ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:50:44], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:50:44.257] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:50:44.258] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:50:44.272] [DEBUG] QUERY OK source="tms_terminals" db=13.7ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:50:44], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:50:44.291] [DEBUG] QUERY OK db=18.3ms idle=14.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a1132938-357a-48cf-ad06-b9737524b001", "2026-06-17T10:49:54Z", ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:50:44.291] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39190, oid: "a1132938-357a-48cf-ad06-b9737524b001", upload_time: "2026-06-17T10:49:54Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]} [2026-06-17 10:50:44.292] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:49:54Z", "value" => "morefun"} [2026-06-17 10:50:44.316] [DEBUG] QUERY OK db=23.7ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "morefun", "vendor", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305175, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.316] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:49:54Z", "value" => "kiosk_launcher"} [2026-06-17 10:50:44.345] [DEBUG] QUERY OK db=28.6ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "kiosk_launcher", "model", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.346] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305176, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.346] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:49:54Z", "value" => "1.0"} [2026-06-17 10:50:44.366] [DEBUG] QUERY OK db=19.3ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "1.0", "app_version", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305177, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.366] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:49:54Z", "value" => "13"} [2026-06-17 10:50:44.379] [DEBUG] QUERY OK db=12.5ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "13", "android_version", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305178, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.380] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:49:54Z", "value" => "744"} [2026-06-17 10:50:44.405] [DEBUG] QUERY OK db=25.1ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "744", "ram_free_mb", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305179, itemkey: "ram_free_mb", value: "744", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.406] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:49:54Z", "value" => "WIFI"} [2026-06-17 10:50:44.431] [DEBUG] QUERY OK db=24.5ms queue=0.1ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "WIFI", "network_type", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305180, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.432] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:49:54Z", "value" => "true"} [2026-06-17 10:50:44.460] [DEBUG] QUERY OK db=27.4ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "true", "kiosk_active", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305181, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.461] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:49:54Z", "value" => ""} [2026-06-17 10:50:44.480] [DEBUG] QUERY OK db=18.0ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:49:54Z", "sim_operator", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305182, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.480] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"} [2026-06-17 10:50:44.497] [DEBUG] QUERY OK db=16.8ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "UNKNOWN", "sim_number", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305183, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.498] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"} [2026-06-17 10:50:44.531] [DEBUG] QUERY OK db=32.8ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "UNKNOWN", "sim_iccid", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305184, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.531] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"} [2026-06-17 10:50:44.555] [DEBUG] QUERY OK db=23.0ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "UNKNOWN", "sim_imsi", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305185, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.555] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"} [2026-06-17 10:50:44.571] [DEBUG] QUERY OK db=15.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "UNKNOWN", "sim_iccid2", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305186, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.572] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:49:54Z", "value" => "UNKNOWN"} [2026-06-17 10:50:44.590] [DEBUG] QUERY OK db=17.6ms queue=0.3ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "UNKNOWN", "sim_imsi2", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305187, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.591] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:49:54Z", "value" => "6"} [2026-06-17 10:50:44.615] [DEBUG] QUERY OK db=24.3ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "6", "data_usage_mb", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305188, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.616] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:49:54Z", "value" => "0"} [2026-06-17 10:50:44.650] [DEBUG] QUERY OK db=33.0ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "0", "mobile_data_mb", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305189, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.651] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:49:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:50:44.667] [DEBUG] QUERY OK db=15.5ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:49:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39190, ~N[2026-06-17 10:50:44], ~N[2026-06-17 10:50:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:44.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305190, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:49:54Z", message: nil, status_log_id: 39190, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:44], updated_at: ~N[2026-06-17 10:50:44]}} [2026-06-17 10:50:44.672] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.5ms idle=3.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:44.672] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=11.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:44.675] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:50:44]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:50:44.679] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data_ (truncated) [2026-06-17 10:50:50.304] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:50:50.304] [INFO ] Incoming JSON payload: {"oid":"d5272efd-65c8-4f25-957f-758da8f6666b","sn":"98251226730002","uploadTime":"2026-06-17T10:50:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"ram_free_mb","value":"742","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50:00Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:50:50.306] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d5272efd-65c8-4f25-957f-758da8f6666b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:00Z", "value" => "742"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:00Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:00Z", "vendor" => "morefun"} [2026-06-17 10:50:50.307] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:50:50.307] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:50:50.308] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:50:50.309] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=632.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:50:50.312] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=130.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-06-17 10:50:50.312] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:50:50.317] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms queue=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:50:50.317] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:50:50.331] [DEBUG] QUERY OK source="tms_terminals" db=12.9ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:50:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:50:50.331] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:50:50.333] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=14.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:50:50.365] [DEBUG] QUERY OK source="tms_terminals" db=31.0ms queue=0.1ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:50:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:50:50.391] [DEBUG] QUERY OK db=25.4ms idle=32.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d5272efd-65c8-4f25-957f-758da8f6666b", "2026-06-17T10:50:00Z", ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:50:50.391] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39191, oid: "d5272efd-65c8-4f25-957f-758da8f6666b", upload_time: "2026-06-17T10:50:00Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]} [2026-06-17 10:50:50.391] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:00Z", "value" => "morefun"} [2026-06-17 10:50:50.418] [DEBUG] QUERY OK db=25.9ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "morefun", "vendor", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305191, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.418] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:00Z", "value" => "kiosk_launcher"} [2026-06-17 10:50:50.433] [DEBUG] QUERY OK db=14.7ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "kiosk_launcher", "model", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305192, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.434] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:00Z", "value" => "1.0"} [2026-06-17 10:50:50.463] [DEBUG] QUERY OK db=27.0ms queue=1.6ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "1.0", "app_version", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305193, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.463] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:00Z", "value" => "13"} [2026-06-17 10:50:50.488] [DEBUG] QUERY OK db=24.2ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "13", "android_version", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305194, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.488] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:00Z", "value" => "742"} [2026-06-17 10:50:50.516] [DEBUG] QUERY OK db=25.5ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "742", "ram_free_mb", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305195, itemkey: "ram_free_mb", value: "742", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.516] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:00Z", "value" => "WIFI"} [2026-06-17 10:50:50.528] [DEBUG] QUERY OK db=11.4ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "WIFI", "network_type", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305196, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.528] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:00Z", "value" => "true"} [2026-06-17 10:50:50.541] [DEBUG] QUERY OK db=12.3ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "true", "kiosk_active", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305197, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.541] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:00Z", "value" => ""} [2026-06-17 10:50:50.571] [DEBUG] QUERY OK db=28.9ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:00Z", "sim_operator", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305198, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.571] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"} [2026-06-17 10:50:50.596] [DEBUG] QUERY OK db=24.9ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "UNKNOWN", "sim_number", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305199, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.598] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"} [2026-06-17 10:50:50.621] [DEBUG] QUERY OK db=22.7ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "UNKNOWN", "sim_iccid", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305200, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.622] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"} [2026-06-17 10:50:50.633] [DEBUG] QUERY OK db=10.9ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "UNKNOWN", "sim_imsi", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305201, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.633] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"} [2026-06-17 10:50:50.658] [DEBUG] QUERY OK db=24.0ms queue=0.4ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "UNKNOWN", "sim_iccid2", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305202, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.659] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:00Z", "value" => "UNKNOWN"} [2026-06-17 10:50:50.683] [DEBUG] QUERY OK db=24.0ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "UNKNOWN", "sim_imsi2", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305203, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.684] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:00Z", "value" => "6"} [2026-06-17 10:50:50.713] [DEBUG] QUERY OK db=28.5ms idle=7.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "6", "data_usage_mb", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305204, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.713] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:00Z", "value" => "0"} [2026-06-17 10:50:50.725] [DEBUG] QUERY OK db=11.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "0", "mobile_data_mb", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305205, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.726] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:50:50.742] [DEBUG] QUERY OK db=14.4ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39191, ~N[2026-06-17 10:50:50], ~N[2026-06-17 10:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:50.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305206, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:00Z", message: nil, status_log_id: 39191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:50], updated_at: ~N[2026-06-17 10:50:50]}} [2026-06-17 10:50:50.743] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=17.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:50.744] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:50.744] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:50:50]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:50:50.749] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data_ (truncated) [2026-06-17 10:50:56.401] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:50:56.405] [INFO ] Incoming JSON payload: {"oid":"066baa5c-bde3-41fc-8d6c-7a2a65f15564","sn":"98251226730002","uploadTime":"2026-06-17T10:50:06Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"ram_free_mb","value":"742","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:06Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50:06Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:50:56.409] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "066baa5c-bde3-41fc-8d6c-7a2a65f15564", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:06Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:06Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:06Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:06Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:06Z", "value" => "742"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:06Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:06Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:06Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:06Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:06Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:06Z", "vendor" => "morefun"} [2026-06-17 10:50:56.415] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:50:56.415] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:50:56.419] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:50:56.420] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=724.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:50:56.421] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=395.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-06-17 10:50:56.421] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:50:56.423] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:50:56.425] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:50:56.451] [DEBUG] QUERY OK source="tms_terminals" db=25.9ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:50:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:50:56.452] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:50:56.454] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.9ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:50:56.469] [DEBUG] QUERY OK source="tms_terminals" db=14.5ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:50:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:50:56.496] [DEBUG] QUERY OK db=25.5ms queue=0.3ms idle=15.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "066baa5c-bde3-41fc-8d6c-7a2a65f15564", "2026-06-17T10:50:06Z", ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:50:56.496] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39192, oid: "066baa5c-bde3-41fc-8d6c-7a2a65f15564", upload_time: "2026-06-17T10:50:06Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]} [2026-06-17 10:50:56.497] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:06Z", "value" => "morefun"} [2026-06-17 10:50:56.526] [DEBUG] QUERY OK db=29.1ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "morefun", "vendor", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305207, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.526] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:06Z", "value" => "kiosk_launcher"} [2026-06-17 10:50:56.552] [DEBUG] QUERY OK db=25.0ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "kiosk_launcher", "model", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305208, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.552] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:06Z", "value" => "1.0"} [2026-06-17 10:50:56.576] [DEBUG] QUERY OK db=23.2ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "1.0", "app_version", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305209, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.578] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:06Z", "value" => "13"} [2026-06-17 10:50:56.605] [DEBUG] QUERY OK db=25.9ms queue=0.3ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "13", "android_version", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305210, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.605] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:06Z", "value" => "742"} [2026-06-17 10:50:56.629] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "742", "ram_free_mb", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305211, itemkey: "ram_free_mb", value: "742", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.630] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:06Z", "value" => "WIFI"} [2026-06-17 10:50:56.654] [DEBUG] QUERY OK db=23.8ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "WIFI", "network_type", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305212, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.654] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:06Z", "value" => "true"} [2026-06-17 10:50:56.687] [DEBUG] QUERY OK db=32.4ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "true", "kiosk_active", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305213, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.690] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:06Z", "value" => ""} [2026-06-17 10:50:56.707] [DEBUG] QUERY OK db=13.8ms queue=0.1ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:06Z", "sim_operator", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305214, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.707] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"} [2026-06-17 10:50:56.732] [DEBUG] QUERY OK db=24.6ms idle=8.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "UNKNOWN", "sim_number", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305215, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.733] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"} [2026-06-17 10:50:56.765] [DEBUG] QUERY OK db=30.1ms queue=0.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "UNKNOWN", "sim_iccid", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305216, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.765] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"} [2026-06-17 10:50:56.801] [DEBUG] QUERY OK db=34.0ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "UNKNOWN", "sim_imsi", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305217, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.801] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"} [2026-06-17 10:50:56.817] [DEBUG] QUERY OK db=15.9ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "UNKNOWN", "sim_iccid2", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305218, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.819] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:06Z", "value" => "UNKNOWN"} [2026-06-17 10:50:56.843] [DEBUG] QUERY OK db=24.2ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "UNKNOWN", "sim_imsi2", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305219, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.843] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:06Z", "value" => "6"} [2026-06-17 10:50:56.878] [DEBUG] QUERY OK db=33.6ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "6", "data_usage_mb", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305220, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.879] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:06Z", "value" => "0"} [2026-06-17 10:50:56.909] [DEBUG] QUERY OK db=29.1ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "0", "mobile_data_mb", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305221, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.910] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:50:56.927] [DEBUG] QUERY OK db=16.9ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39192, ~N[2026-06-17 10:50:56], ~N[2026-06-17 10:50:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:50:56.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305222, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:06Z", message: nil, status_log_id: 39192, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:50:56], updated_at: ~N[2026-06-17 10:50:56]}} [2026-06-17 10:50:56.932] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.6ms idle=2.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:56.932] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:50:56]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:50:56.933] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms queue=0.1ms idle=20.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:50:56.939] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data_ (truncated) [2026-06-17 10:51:03.064] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:03.064] [INFO ] Incoming JSON payload: {"oid":"4d02ca06-b3a8-434d-b990-f54887ef9509","sn":"98251226730002","uploadTime":"2026-06-17T10:50:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"ram_free_mb","value":"743","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50:12Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:03.065] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4d02ca06-b3a8-434d-b990-f54887ef9509", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:12Z", "value" => "743"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:12Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:12Z", "vendor" => "morefun"} [2026-06-17 10:51:03.065] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:03.065] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:03.065] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:03.073] [DEBUG] QUERY OK source="parameter_templates" db=6.9ms idle=881.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-06-17 10:51:03.079] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms queue=3.0ms idle=322.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-06-17 10:51:03.079] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:03.082] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=6.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:03.083] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:03.112] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:51:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:03.114] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:03.128] [DEBUG] QUERY OK source="tms_terminals" db=9.6ms queue=0.6ms idle=35.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:03.167] [DEBUG] QUERY OK source="tms_terminals" db=38.1ms idle=17.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:03.212] [DEBUG] QUERY OK db=44.8ms idle=39.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4d02ca06-b3a8-434d-b990-f54887ef9509", "2026-06-17T10:50:12Z", ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:03.213] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39193, oid: "4d02ca06-b3a8-434d-b990-f54887ef9509", upload_time: "2026-06-17T10:50:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]} [2026-06-17 10:51:03.213] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:12Z", "value" => "morefun"} [2026-06-17 10:51:03.250] [DEBUG] QUERY OK db=29.6ms queue=0.3ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "morefun", "vendor", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305223, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.251] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:12Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:03.284] [DEBUG] QUERY OK db=33.2ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "kiosk_launcher", "model", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305224, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.284] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:12Z", "value" => "1.0"} [2026-06-17 10:51:03.312] [DEBUG] QUERY OK db=27.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "1.0", "app_version", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305225, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.313] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:12Z", "value" => "13"} [2026-06-17 10:51:03.354] [DEBUG] QUERY OK db=40.4ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "13", "android_version", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305226, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.355] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:12Z", "value" => "743"} [2026-06-17 10:51:03.386] [DEBUG] QUERY OK db=31.4ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "743", "ram_free_mb", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305227, itemkey: "ram_free_mb", value: "743", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.388] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:12Z", "value" => "WIFI"} [2026-06-17 10:51:03.415] [DEBUG] QUERY OK db=26.4ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "WIFI", "network_type", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305228, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.415] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:12Z", "value" => "true"} [2026-06-17 10:51:03.452] [DEBUG] QUERY OK db=35.4ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "true", "kiosk_active", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305229, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.452] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:12Z", "value" => ""} [2026-06-17 10:51:03.485] [DEBUG] QUERY OK db=32.3ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:12Z", "sim_operator", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305230, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.486] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"} [2026-06-17 10:51:03.508] [DEBUG] QUERY OK db=16.9ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "UNKNOWN", "sim_number", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305231, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.509] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"} [2026-06-17 10:51:03.549] [DEBUG] QUERY OK db=34.2ms queue=5.5ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "UNKNOWN", "sim_iccid", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305232, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.549] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"} [2026-06-17 10:51:03.577] [DEBUG] QUERY OK db=26.4ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "UNKNOWN", "sim_imsi", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305233, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.579] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"} [2026-06-17 10:51:03.617] [DEBUG] QUERY OK db=35.4ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "UNKNOWN", "sim_iccid2", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305234, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.619] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:12Z", "value" => "UNKNOWN"} [2026-06-17 10:51:03.643] [DEBUG] QUERY OK db=23.6ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "UNKNOWN", "sim_imsi2", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305235, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.644] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:12Z", "value" => "6"} [2026-06-17 10:51:03.666] [DEBUG] QUERY OK db=22.4ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "6", "data_usage_mb", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305236, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.667] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:12Z", "value" => "0"} [2026-06-17 10:51:03.696] [DEBUG] QUERY OK db=28.8ms queue=0.2ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "0", "mobile_data_mb", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305237, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.697] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:03.735] [DEBUG] QUERY OK db=33.4ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39193, ~N[2026-06-17 10:51:03], ~N[2026-06-17 10:51:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:03.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305238, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:12Z", message: nil, status_log_id: 39193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:03], updated_at: ~N[2026-06-17 10:51:03]}} [2026-06-17 10:51:03.746] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=12.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:03.747] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:03]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:03.756] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=14.0ms idle=44.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:03.768] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data_ (truncated) [2026-06-17 10:51:08.750] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:08.750] [INFO ] Incoming JSON payload: {"oid":"b07ffa1b-156e-458d-8f46-5f592faf95dd","sn":"98251226730002","uploadTime":"2026-06-17T10:50:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"ram_free_mb","value":"742","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:08.752] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b07ffa1b-156e-458d-8f46-5f592faf95dd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:18Z", "value" => "742"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:18Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:18Z", "vendor" => "morefun"} [2026-06-17 10:51:08.753] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:08.753] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:08.753] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:08.754] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1568.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-06-17 10:51:08.754] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=941.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-06-17 10:51:08.754] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:08.756] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:08.759] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:08.775] [DEBUG] QUERY OK source="tms_terminals" db=15.9ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:51:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:08.775] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:08.779] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=21.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:08.804] [DEBUG] QUERY OK source="tms_terminals" db=24.8ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:08.838] [DEBUG] QUERY OK db=32.8ms queue=0.3ms idle=25.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b07ffa1b-156e-458d-8f46-5f592faf95dd", "2026-06-17T10:50:18Z", ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:08.838] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39194, oid: "b07ffa1b-156e-458d-8f46-5f592faf95dd", upload_time: "2026-06-17T10:50:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]} [2026-06-17 10:51:08.839] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:18Z", "value" => "morefun"} [2026-06-17 10:51:08.863] [DEBUG] QUERY OK db=23.8ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "morefun", "vendor", 39194, ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:08.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305239, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]}} [2026-06-17 10:51:08.863] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:18Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:08.875] [DEBUG] QUERY OK db=11.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "kiosk_launcher", "model", 39194, ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:08.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305240, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]}} [2026-06-17 10:51:08.875] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:18Z", "value" => "1.0"} [2026-06-17 10:51:08.897] [DEBUG] QUERY OK db=20.5ms queue=0.5ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "1.0", "app_version", 39194, ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:08.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305241, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]}} [2026-06-17 10:51:08.897] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:18Z", "value" => "13"} [2026-06-17 10:51:08.921] [DEBUG] QUERY OK db=23.7ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "13", "android_version", 39194, ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:08.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305242, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]}} [2026-06-17 10:51:08.922] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:18Z", "value" => "742"} [2026-06-17 10:51:08.952] [DEBUG] QUERY OK db=30.2ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "742", "ram_free_mb", 39194, ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:08.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305243, itemkey: "ram_free_mb", value: "742", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]}} [2026-06-17 10:51:08.954] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:18Z", "value" => "WIFI"} [2026-06-17 10:51:08.974] [DEBUG] QUERY OK db=20.4ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "WIFI", "network_type", 39194, ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:08.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305244, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]}} [2026-06-17 10:51:08.976] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:18Z", "value" => "true"} [2026-06-17 10:51:08.991] [DEBUG] QUERY OK db=14.4ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "true", "kiosk_active", 39194, ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:08.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305245, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]}} [2026-06-17 10:51:08.991] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:18Z", "value" => ""} [2026-06-17 10:51:09.010] [DEBUG] QUERY OK db=18.2ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:18Z", "sim_operator", 39194, ~N[2026-06-17 10:51:08], ~N[2026-06-17 10:51:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305246, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:08], updated_at: ~N[2026-06-17 10:51:08]}} [2026-06-17 10:51:09.010] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"} [2026-06-17 10:51:09.044] [DEBUG] QUERY OK db=33.9ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "UNKNOWN", "sim_number", 39194, ~N[2026-06-17 10:51:09], ~N[2026-06-17 10:51:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305247, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:09], updated_at: ~N[2026-06-17 10:51:09]}} [2026-06-17 10:51:09.045] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"} [2026-06-17 10:51:09.072] [DEBUG] QUERY OK db=27.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "UNKNOWN", "sim_iccid", 39194, ~N[2026-06-17 10:51:09], ~N[2026-06-17 10:51:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305248, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:09], updated_at: ~N[2026-06-17 10:51:09]}} [2026-06-17 10:51:09.073] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"} [2026-06-17 10:51:09.087] [DEBUG] QUERY OK db=14.3ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "UNKNOWN", "sim_imsi", 39194, ~N[2026-06-17 10:51:09], ~N[2026-06-17 10:51:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305249, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:09], updated_at: ~N[2026-06-17 10:51:09]}} [2026-06-17 10:51:09.088] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"} [2026-06-17 10:51:09.099] [DEBUG] QUERY OK db=11.5ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "UNKNOWN", "sim_iccid2", 39194, ~N[2026-06-17 10:51:09], ~N[2026-06-17 10:51:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305250, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:09], updated_at: ~N[2026-06-17 10:51:09]}} [2026-06-17 10:51:09.100] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:18Z", "value" => "UNKNOWN"} [2026-06-17 10:51:09.136] [DEBUG] QUERY OK db=35.6ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "UNKNOWN", "sim_imsi2", 39194, ~N[2026-06-17 10:51:09], ~N[2026-06-17 10:51:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305251, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:09], updated_at: ~N[2026-06-17 10:51:09]}} [2026-06-17 10:51:09.137] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:18Z", "value" => "6"} [2026-06-17 10:51:09.173] [DEBUG] QUERY OK db=36.0ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "6", "data_usage_mb", 39194, ~N[2026-06-17 10:51:09], ~N[2026-06-17 10:51:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.174] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305252, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:09], updated_at: ~N[2026-06-17 10:51:09]}} [2026-06-17 10:51:09.174] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:18Z", "value" => "0"} [2026-06-17 10:51:09.195] [DEBUG] QUERY OK db=21.2ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:18Z", "0", "mobile_data_mb", 39194, ~N[2026-06-17 10:51:09], ~N[2026-06-17 10:51:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305253, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:09], updated_at: ~N[2026-06-17 10:51:09]}} [2026-06-17 10:51:09.200] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:09.214] [DEBUG] QUERY OK db=12.9ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39194, ~N[2026-06-17 10:51:09], ~N[2026-06-17 10:51:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:09.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305254, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:18Z", message: nil, status_log_id: 39194, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:09], updated_at: ~N[2026-06-17 10:51:09]}} [2026-06-17 10:51:09.222] [DEBUG] QUERY OK source="tms_terminals" db=4.1ms idle=22.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:09.223] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:08]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:14.658] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:14.658] [INFO ] Incoming JSON payload: {"oid":"869ecd64-cabf-41f9-aaf8-58e2f121823f","sn":"98251226730002","uploadTime":"2026-06-17T10:50:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"ram_free_mb","value":"740","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50:24Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:14.660] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "869ecd64-cabf-41f9-aaf8-58e2f121823f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:24Z", "value" => "740"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:24Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:24Z", "vendor" => "morefun"} [2026-06-17 10:51:14.660] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:14.664] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:14.664] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:14.665] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1187.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-06-17 10:51:14.666] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=831.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-06-17 10:51:14.666] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:14.668] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:14.668] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:14.690] [DEBUG] QUERY OK source="tms_terminals" db=22.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:51:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:14.690] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:14.691] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:14.708] [DEBUG] QUERY OK source="tms_terminals" db=16.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:14.734] [DEBUG] QUERY OK db=25.3ms idle=17.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "869ecd64-cabf-41f9-aaf8-58e2f121823f", "2026-06-17T10:50:24Z", ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:14.735] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39195, oid: "869ecd64-cabf-41f9-aaf8-58e2f121823f", upload_time: "2026-06-17T10:50:24Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]} [2026-06-17 10:51:14.735] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:24Z", "value" => "morefun"} [2026-06-17 10:51:14.767] [DEBUG] QUERY OK db=31.8ms queue=0.1ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "morefun", "vendor", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305255, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.767] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:24Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:14.785] [DEBUG] QUERY OK db=17.3ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "kiosk_launcher", "model", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305256, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.786] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:24Z", "value" => "1.0"} [2026-06-17 10:51:14.798] [DEBUG] QUERY OK db=11.2ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "1.0", "app_version", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305257, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.798] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:24Z", "value" => "13"} [2026-06-17 10:51:14.836] [DEBUG] QUERY OK db=37.8ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "13", "android_version", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305258, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.837] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:24Z", "value" => "740"} [2026-06-17 10:51:14.862] [DEBUG] QUERY OK db=24.8ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "740", "ram_free_mb", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305259, itemkey: "ram_free_mb", value: "740", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.862] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:24Z", "value" => "WIFI"} [2026-06-17 10:51:14.891] [DEBUG] QUERY OK db=28.8ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "WIFI", "network_type", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305260, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.892] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:24Z", "value" => "true"} [2026-06-17 10:51:14.909] [DEBUG] QUERY OK db=14.7ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "true", "kiosk_active", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305261, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.910] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:24Z", "value" => ""} [2026-06-17 10:51:14.928] [DEBUG] QUERY OK db=18.4ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:24Z", "sim_operator", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305262, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.929] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"} [2026-06-17 10:51:14.952] [DEBUG] QUERY OK db=23.4ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "UNKNOWN", "sim_number", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305263, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.953] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"} [2026-06-17 10:51:14.982] [DEBUG] QUERY OK db=28.5ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "UNKNOWN", "sim_iccid", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:14.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305264, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:14.982] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"} [2026-06-17 10:51:15.009] [DEBUG] QUERY OK db=26.1ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "UNKNOWN", "sim_imsi", 39195, ~N[2026-06-17 10:51:14], ~N[2026-06-17 10:51:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:15.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305265, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:14], updated_at: ~N[2026-06-17 10:51:14]}} [2026-06-17 10:51:15.009] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"} [2026-06-17 10:51:15.051] [DEBUG] QUERY OK db=40.1ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "UNKNOWN", "sim_iccid2", 39195, ~N[2026-06-17 10:51:15], ~N[2026-06-17 10:51:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:15.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305266, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:15], updated_at: ~N[2026-06-17 10:51:15]}} [2026-06-17 10:51:15.051] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:24Z", "value" => "UNKNOWN"} [2026-06-17 10:51:15.124] [DEBUG] QUERY OK db=72.0ms queue=0.2ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "UNKNOWN", "sim_imsi2", 39195, ~N[2026-06-17 10:51:15], ~N[2026-06-17 10:51:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:15.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305267, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:15], updated_at: ~N[2026-06-17 10:51:15]}} [2026-06-17 10:51:15.125] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:24Z", "value" => "6"} [2026-06-17 10:51:15.179] [DEBUG] QUERY OK db=54.0ms idle=74.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "6", "data_usage_mb", 39195, ~N[2026-06-17 10:51:15], ~N[2026-06-17 10:51:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:15.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305268, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:15], updated_at: ~N[2026-06-17 10:51:15]}} [2026-06-17 10:51:15.180] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:24Z", "value" => "0"} [2026-06-17 10:51:15.206] [DEBUG] QUERY OK db=25.8ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "0", "mobile_data_mb", 39195, ~N[2026-06-17 10:51:15], ~N[2026-06-17 10:51:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:15.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305269, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:15], updated_at: ~N[2026-06-17 10:51:15]}} [2026-06-17 10:51:15.207] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:15.234] [DEBUG] QUERY OK db=25.7ms queue=0.1ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39195, ~N[2026-06-17 10:51:15], ~N[2026-06-17 10:51:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:15.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305270, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:24Z", message: nil, status_log_id: 39195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:15], updated_at: ~N[2026-06-17 10:51:15]}} [2026-06-17 10:51:15.237] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=29.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:15.237] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:14]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:20.991] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:20.992] [INFO ] Incoming JSON payload: {"oid":"d0bc896e-6505-4c42-96e5-cad171860dda","sn":"98251226730002","uploadTime":"2026-06-17T10:50:30Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"ram_free_mb","value":"745","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:30Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50:30Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:20.993] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d0bc896e-6505-4c42-96e5-cad171860dda", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:30Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:30Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:30Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:30Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:30Z", "value" => "745"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:30Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:30Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:30Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:30Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:30Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:30Z", "vendor" => "morefun"} [2026-06-17 10:51:20.994] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:20.994] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:20.994] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:20.994] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1140.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-06-17 10:51:20.995] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=137.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.`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-06-17 10:51:20.996] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:20.998] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:20.998] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:21.010] [DEBUG] QUERY OK source="tms_terminals" db=11.7ms queue=0.2ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:51:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:21.011] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:21.012] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=12.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:21.036] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:21.065] [DEBUG] QUERY OK db=29.0ms idle=23.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d0bc896e-6505-4c42-96e5-cad171860dda", "2026-06-17T10:50:30Z", ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:21.066] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39196, oid: "d0bc896e-6505-4c42-96e5-cad171860dda", upload_time: "2026-06-17T10:50:30Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]} [2026-06-17 10:51:21.066] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:30Z", "value" => "morefun"} [2026-06-17 10:51:21.094] [DEBUG] QUERY OK db=27.6ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "morefun", "vendor", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305271, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.094] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:30Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:21.108] [DEBUG] QUERY OK db=14.1ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "kiosk_launcher", "model", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305272, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.109] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:30Z", "value" => "1.0"} [2026-06-17 10:51:21.123] [DEBUG] QUERY OK db=13.8ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "1.0", "app_version", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305273, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.123] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:30Z", "value" => "13"} [2026-06-17 10:51:21.152] [DEBUG] QUERY OK db=28.6ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "13", "android_version", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305274, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.153] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:30Z", "value" => "745"} [2026-06-17 10:51:21.178] [DEBUG] QUERY OK db=24.9ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "745", "ram_free_mb", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305275, itemkey: "ram_free_mb", value: "745", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.178] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:30Z", "value" => "WIFI"} [2026-06-17 10:51:21.202] [DEBUG] QUERY OK db=23.3ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "WIFI", "network_type", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305276, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.202] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:30Z", "value" => "true"} [2026-06-17 10:51:21.220] [DEBUG] QUERY OK db=16.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "true", "kiosk_active", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305277, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.220] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:30Z", "value" => ""} [2026-06-17 10:51:21.232] [DEBUG] QUERY OK db=11.5ms queue=0.1ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:30Z", "sim_operator", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305278, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.233] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"} [2026-06-17 10:51:21.266] [DEBUG] QUERY OK db=32.6ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "UNKNOWN", "sim_number", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305279, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.266] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"} [2026-06-17 10:51:21.291] [DEBUG] QUERY OK db=24.0ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "UNKNOWN", "sim_iccid", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305280, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.291] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"} [2026-06-17 10:51:21.320] [DEBUG] QUERY OK db=27.2ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "UNKNOWN", "sim_imsi", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305281, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.320] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"} [2026-06-17 10:51:21.337] [DEBUG] QUERY OK db=13.8ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "UNKNOWN", "sim_iccid2", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305282, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.340] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:30Z", "value" => "UNKNOWN"} [2026-06-17 10:51:21.371] [DEBUG] QUERY OK db=30.1ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "UNKNOWN", "sim_imsi2", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305283, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.371] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:30Z", "value" => "6"} [2026-06-17 10:51:21.396] [DEBUG] QUERY OK db=24.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "6", "data_usage_mb", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305284, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.396] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:30Z", "value" => "0"} [2026-06-17 10:51:21.425] [DEBUG] QUERY OK db=27.9ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "0", "mobile_data_mb", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305285, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.427] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:21.446] [DEBUG] QUERY OK db=18.2ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39196, ~N[2026-06-17 10:51:21], ~N[2026-06-17 10:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:21.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305286, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:30Z", message: nil, status_log_id: 39196, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:21], updated_at: ~N[2026-06-17 10:51:21]}} [2026-06-17 10:51:21.448] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=21.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:21.449] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:21]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:25.938] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:25.939] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:50:36Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:50:36Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:50:36Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:50:36Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:50:36Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:50:36Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:50:36Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:50:36Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:50:36Z","vendor":"MoreFun"} [2026-06-17 10:51:25.939] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:50:36Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:50:36Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:50:36Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:50:36Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:50:36Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:50:36Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:50:36Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:50:36Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:36Z", "vendor" => "MoreFun"} [2026-06-17 10:51:25.939] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 10:51:25.939] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:25.939] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:51:25.940] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1057.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-06-17 10:51:25.941] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=55.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:51:25.948] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=1.2ms idle=6.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-06-17 10:51:25.957] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=2.5ms idle=12.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-06-17 10:51:25.968] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms queue=1.8ms idle=18.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:51:25.998] [DEBUG] QUERY OK source="pos_merchant" db=0.5ms queue=26.0ms idle=14.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:51:26.003] [DEBUG] QUERY OK db=0.6ms queue=1.9ms idle=1813.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 ["372916040000000"] [2026-06-17 10:51:26.004] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:51:26.010] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms queue=1.6ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:51:26.016] [DEBUG] QUERY OK source="address" db=0.5ms queue=0.7ms idle=16.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:51:26.016] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:51:26.029] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:51:26.065] [DEBUG] QUERY OK db=25.8ms queue=1.3ms idle=27.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", "a813d2bc3950a9b49c562967ae96132c74e35dca31b0d6c546db368a4eae2877", 1412, 940, ~U[2026-06-17 10:51:26Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:51:26.065] [INFO ] AutoPushService: Created push log 29737 for MF919 params.zip [2026-06-17 10:51:26.069] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1412, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:51:26.069] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:51:26.073] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:51:26.083] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=1.6ms idle=64.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-06-17 10:51:26.089] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:51:26.107] [DEBUG] QUERY OK db=16.7ms queue=0.6ms idle=25.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", "a50e6fd8db4f4855427a1b30e8549b4bd6f9a76f18cfe0c92fd7b6c62e753fdc", 610, 17947, ~U[2026-06-17 10:51:26Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:51:26.108] [INFO ] AutoPushService: Created push log 29738 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:51:26.108] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 610, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:51:26.108] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:51:26.108] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:51:26.109] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-06-17 10:51:26.114] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:51:26.115] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:51:26.115] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:51:26.175] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:51:26.176] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:51:26.176] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:51:26.178] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=67.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-06-17 10:51:26.178] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:51:26.178] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:51:26.179] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=63.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:26.244] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms queue=41.6ms idle=1.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:51:26], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:51:26.244] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:26.244] [INFO ] Event published: terminal_updated [2026-06-17 10:51:26.245] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:51:26.246] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:51:26.247] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms queue=1.0ms idle=65.8ms 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-06-17 10:51:26], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:51:26.247] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:51:26.249] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.8ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:51:26.259] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=1.9ms idle=8.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-06-17 10:51:26.260] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:51:26.324] [DEBUG] QUERY OK source="tms_terminals" db=33.9ms queue=42.5ms idle=0.9ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", ~N[2026-06-17 10:51:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:26.325] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:26.326] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=65.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:26.385] [DEBUG] QUERY OK source="tms_terminals" db=17.4ms queue=40.9ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:26.421] [DEBUG] QUERY OK db=35.2ms idle=59.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:50:36Z", ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:26.421] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39197, oid: "organization_id", upload_time: "2026-06-17T10:50:36Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]} [2026-06-17 10:51:26.421] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:50:36Z", "value" => "online"} [2026-06-17 10:51:26.458] [DEBUG] QUERY OK db=35.9ms queue=0.5ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:50:36Z", "online", "status", 39197, ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:26.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305287, itemkey: "status", value: "online", timestamp: "2026-06-17T10:50:36Z", message: "Terminal status update", status_log_id: 39197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]}} [2026-06-17 10:51:26.458] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:51:26.458] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:50:36Z", "value" => "42"} [2026-06-17 10:51:26.459] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 3 terminals [2026-06-17 10:51:26.495] [DEBUG] QUERY OK db=34.7ms queue=0.9ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:50:36Z", "42", "battery", 39197, ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:26.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305288, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:50:36Z", message: "Battery level", status_log_id: 39197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]}} [2026-06-17 10:51:26.495] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:50:36Z", "value" => "online"} [2026-06-17 10:51:26.516] [DEBUG] QUERY OK db=20.1ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:50:36Z", "online", "network", 39197, ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:26.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305289, itemkey: "network", value: "online", timestamp: "2026-06-17T10:50:36Z", message: "Network connectivity", status_log_id: 39197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]}} [2026-06-17 10:51:26.516] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:51:26.516] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:50:36Z", "value" => "0"} [2026-06-17 10:51:26.517] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 3 terminals [2026-06-17 10:51:26.541] [DEBUG] QUERY OK db=25.0ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:50:36Z", "0", "cpu", 39197, ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:26.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305290, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:50:36Z", message: "CPU usage percentage", status_log_id: 39197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]}} [2026-06-17 10:51:26.542] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:50:36Z", "value" => ""} [2026-06-17 10:51:26.607] [DEBUG] QUERY OK db=22.9ms queue=41.9ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:50:36Z", "parameter_config", 39197, ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:26.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305291, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T10:50:36Z", message: "Current parameters version", status_log_id: 39197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]}} [2026-06-17 10:51:26.608] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:50:36Z", "value" => ""} [2026-06-17 10:51:26.672] [DEBUG] QUERY OK db=22.3ms queue=41.2ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:50:36Z", "emv_config", 39197, ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:26.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305292, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T10:50:36Z", message: "Current EMV config version", status_log_id: 39197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]}} [2026-06-17 10:51:26.672] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:50:36Z", "value" => ""} [2026-06-17 10:51:26.695] [DEBUG] QUERY OK db=22.2ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:50:36Z", "keys_config", 39197, ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:26.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305293, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:50:36Z", message: "Current keys config version", status_log_id: 39197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]}} [2026-06-17 10:51:26.696] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:50:36Z", "value" => ""} [2026-06-17 10:51:26.725] [DEBUG] QUERY OK db=26.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:50:36Z", "application", 39197, ~N[2026-06-17 10:51:26], ~N[2026-06-17 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:26.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305294, itemkey: "application", value: nil, timestamp: "2026-06-17T10:50:36Z", message: "Current application version", status_log_id: 39197, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:26], updated_at: ~N[2026-06-17 10:51:26]}} [2026-06-17 10:51:26.730] [DEBUG] QUERY OK source="tms_terminals" db=4.1ms queue=0.1ms idle=30.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:26.730] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:26]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:26.732] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:50:36Z"} [2026-06-17 10:51:26.737] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:50:36Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 13, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{"phoenix_client_shamanth" => true}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:51:27.051] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:27.051] [INFO ] Incoming JSON payload: {"oid":"6bdbe3e2-5277-457a-b6b1-bd9ba8ead12f","sn":"98251226730002","uploadTime":"2026-06-17T10:50:37Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"ram_free_mb","value":"752","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:37Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:27.052] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6bdbe3e2-5277-457a-b6b1-bd9ba8ead12f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:37Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:37Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:37Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:37Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:37Z", "value" => "752"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:37Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:37Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:37Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:37Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:37Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:37Z", "vendor" => "morefun"} [2026-06-17 10:51:27.052] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:27.052] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:27.053] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:27.054] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=323.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-06-17 10:51:27.055] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=166.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-06-17 10:51:27.056] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:27.061] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:27.086] [DEBUG] QUERY OK source="tms_terminals" db=20.7ms queue=0.3ms idle=9.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:51:27], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:51:27.086] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:27.086] [INFO ] Event published: terminal_updated [2026-06-17 10:51:27.086] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:51:27.086] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:51:27.087] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:51:27.087] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms idle=25.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-06-17 10:51:27], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:51:27.090] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=2.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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:51:27.092] [DEBUG] QUERY OK source="terminal_group_rules" db=1.0ms 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-06-17 10:51:27.092] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:51:27.152] [DEBUG] QUERY OK source="tms_terminals" db=22.7ms queue=40.5ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", ~N[2026-06-17 10:51:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:27.152] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:27.154] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=61.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:27.218] [DEBUG] QUERY OK source="tms_terminals" db=22.4ms queue=41.3ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:27.255] [DEBUG] QUERY OK db=33.5ms queue=0.2ms idle=66.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6bdbe3e2-5277-457a-b6b1-bd9ba8ead12f", "2026-06-17T10:50:37Z", ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:27.255] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39198, oid: "6bdbe3e2-5277-457a-b6b1-bd9ba8ead12f", upload_time: "2026-06-17T10:50:37Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]} [2026-06-17 10:51:27.255] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:37Z", "value" => "morefun"} [2026-06-17 10:51:27.322] [DEBUG] QUERY OK db=25.3ms queue=40.8ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "morefun", "vendor", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305295, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.322] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:37Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:27.388] [DEBUG] QUERY OK db=24.2ms queue=40.7ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "kiosk_launcher", "model", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305296, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.389] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:37Z", "value" => "1.0"} [2026-06-17 10:51:27.422] [DEBUG] QUERY OK db=33.3ms idle=67.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "1.0", "app_version", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305297, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.423] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:37Z", "value" => "13"} [2026-06-17 10:51:27.445] [DEBUG] QUERY OK db=21.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "13", "android_version", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.446] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305298, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.446] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:37Z", "value" => "752"} [2026-06-17 10:51:27.471] [DEBUG] QUERY OK db=24.3ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "752", "ram_free_mb", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305299, itemkey: "ram_free_mb", value: "752", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.473] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:37Z", "value" => "WIFI"} [2026-06-17 10:51:27.496] [DEBUG] QUERY OK db=23.2ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "WIFI", "network_type", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305300, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.497] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:37Z", "value" => "true"} [2026-06-17 10:51:27.537] [DEBUG] QUERY OK db=38.3ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "true", "kiosk_active", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305301, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.538] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:37Z", "value" => ""} [2026-06-17 10:51:27.571] [DEBUG] QUERY OK db=32.2ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:37Z", "sim_operator", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305302, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.571] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"} [2026-06-17 10:51:27.594] [DEBUG] QUERY OK db=20.5ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "UNKNOWN", "sim_number", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305303, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.597] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"} [2026-06-17 10:51:27.645] [DEBUG] QUERY OK db=45.7ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "UNKNOWN", "sim_iccid", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305304, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.645] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"} [2026-06-17 10:51:27.724] [DEBUG] QUERY OK db=78.5ms queue=0.1ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "UNKNOWN", "sim_imsi", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305305, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.728] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"} [2026-06-17 10:51:27.759] [DEBUG] QUERY OK db=27.4ms idle=86.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "UNKNOWN", "sim_iccid2", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305306, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.759] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:37Z", "value" => "UNKNOWN"} [2026-06-17 10:51:27.785] [DEBUG] QUERY OK db=25.7ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "UNKNOWN", "sim_imsi2", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305307, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.786] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:37Z", "value" => "6"} [2026-06-17 10:51:27.822] [DEBUG] QUERY OK db=36.0ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "6", "data_usage_mb", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305308, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.822] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:37Z", "value" => "0"} [2026-06-17 10:51:27.840] [DEBUG] QUERY OK db=17.7ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:37Z", "0", "mobile_data_mb", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305309, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.841] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:27.867] [DEBUG] QUERY OK db=25.1ms queue=0.1ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39198, ~N[2026-06-17 10:51:27], ~N[2026-06-17 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:27.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305310, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:37Z", message: nil, status_log_id: 39198, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:27], updated_at: ~N[2026-06-17 10:51:27]}} [2026-06-17 10:51:27.876] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.1ms idle=34.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:27.877] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:33.419] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:33.420] [INFO ] Incoming JSON payload: {"oid":"890a67ce-33a9-4467-b328-a771b2f23985","sn":"98251226730002","uploadTime":"2026-06-17T10:50:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"ram_free_mb","value":"750","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:33.421] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "890a67ce-33a9-4467-b328-a771b2f23985", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:43Z", "value" => "750"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:43Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:43Z", "vendor" => "morefun"} [2026-06-17 10:51:33.421] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:33.421] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:33.421] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:33.423] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.2ms idle=508.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-06-17 10:51:33.424] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=234.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.`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-06-17 10:51:33.424] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:33.425] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:33.425] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:33.459] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:51:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:33.459] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:33.463] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:33.497] [DEBUG] QUERY OK source="tms_terminals" db=33.0ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:33.516] [DEBUG] QUERY OK db=19.2ms idle=33.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "890a67ce-33a9-4467-b328-a771b2f23985", "2026-06-17T10:50:43Z", ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:33.516] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39199, oid: "890a67ce-33a9-4467-b328-a771b2f23985", upload_time: "2026-06-17T10:50:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]} [2026-06-17 10:51:33.516] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:43Z", "value" => "morefun"} [2026-06-17 10:51:33.533] [DEBUG] QUERY OK db=15.7ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "morefun", "vendor", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305311, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.533] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:43Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:33.568] [DEBUG] QUERY OK db=34.1ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "kiosk_launcher", "model", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305312, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.568] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:43Z", "value" => "1.0"} [2026-06-17 10:51:33.592] [DEBUG] QUERY OK db=23.5ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "1.0", "app_version", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305313, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.592] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:43Z", "value" => "13"} [2026-06-17 10:51:33.615] [DEBUG] QUERY OK db=22.7ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "13", "android_version", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305314, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.616] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:43Z", "value" => "750"} [2026-06-17 10:51:33.637] [DEBUG] QUERY OK db=21.0ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "750", "ram_free_mb", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305315, itemkey: "ram_free_mb", value: "750", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.638] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:43Z", "value" => "WIFI"} [2026-06-17 10:51:33.666] [DEBUG] QUERY OK db=27.5ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "WIFI", "network_type", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305316, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.666] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:43Z", "value" => "true"} [2026-06-17 10:51:33.691] [DEBUG] QUERY OK db=24.6ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "true", "kiosk_active", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305317, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.692] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:43Z", "value" => ""} [2026-06-17 10:51:33.726] [DEBUG] QUERY OK db=32.4ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:43Z", "sim_operator", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305318, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.726] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"} [2026-06-17 10:51:33.745] [DEBUG] QUERY OK db=17.4ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "UNKNOWN", "sim_number", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305319, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.746] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"} [2026-06-17 10:51:33.758] [DEBUG] QUERY OK db=11.2ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "UNKNOWN", "sim_iccid", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305320, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.759] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"} [2026-06-17 10:51:33.794] [DEBUG] QUERY OK db=31.1ms queue=4.1ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "UNKNOWN", "sim_imsi", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305321, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.795] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"} [2026-06-17 10:51:33.821] [DEBUG] QUERY OK db=25.8ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "UNKNOWN", "sim_iccid2", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305322, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.821] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:43Z", "value" => "UNKNOWN"} [2026-06-17 10:51:33.850] [DEBUG] QUERY OK db=28.3ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "UNKNOWN", "sim_imsi2", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305323, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.852] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:43Z", "value" => "6"} [2026-06-17 10:51:33.898] [DEBUG] QUERY OK db=46.3ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "6", "data_usage_mb", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305324, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.899] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:43Z", "value" => "0"} [2026-06-17 10:51:33.923] [DEBUG] QUERY OK db=23.6ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:43Z", "0", "mobile_data_mb", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.923] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305325, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.924] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:33.954] [DEBUG] QUERY OK db=29.3ms idle=5.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39199, ~N[2026-06-17 10:51:33], ~N[2026-06-17 10:51:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:33.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305326, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:43Z", message: nil, status_log_id: 39199, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:33], updated_at: ~N[2026-06-17 10:51:33]}} [2026-06-17 10:51:33.961] [DEBUG] QUERY OK source="tms_terminals" db=6.5ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:33.964] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:39.473] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:39.473] [INFO ] Incoming JSON payload: {"oid":"30ad7b0c-35e4-4c93-913b-2f87de3bed3c","sn":"98251226730002","uploadTime":"2026-06-17T10:50:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"ram_free_mb","value":"749","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50:49Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:39.476] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "30ad7b0c-35e4-4c93-913b-2f87de3bed3c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:49Z", "value" => "749"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:49Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:49Z", "vendor" => "morefun"} [2026-06-17 10:51:39.476] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:39.476] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:39.476] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:39.479] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=1.2ms idle=539.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:51:39.480] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms queue=0.1ms idle=266.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.`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-06-17 10:51:39.481] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:39.482] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:39.483] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:39.509] [DEBUG] QUERY OK source="tms_terminals" db=25.9ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:51:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:39.510] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:39.511] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:39.530] [DEBUG] QUERY OK source="tms_terminals" db=16.5ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:39.560] [DEBUG] QUERY OK db=29.4ms idle=19.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "30ad7b0c-35e4-4c93-913b-2f87de3bed3c", "2026-06-17T10:50:49Z", ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:39.560] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39200, oid: "30ad7b0c-35e4-4c93-913b-2f87de3bed3c", upload_time: "2026-06-17T10:50:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]} [2026-06-17 10:51:39.560] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:49Z", "value" => "morefun"} [2026-06-17 10:51:39.587] [DEBUG] QUERY OK db=25.2ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "morefun", "vendor", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305327, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.587] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:49Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:39.621] [DEBUG] QUERY OK db=33.5ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "kiosk_launcher", "model", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305328, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.622] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:49Z", "value" => "1.0"} [2026-06-17 10:51:39.641] [DEBUG] QUERY OK db=18.3ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "1.0", "app_version", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305329, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.641] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:49Z", "value" => "13"} [2026-06-17 10:51:39.665] [DEBUG] QUERY OK db=23.5ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "13", "android_version", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305330, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.666] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:49Z", "value" => "749"} [2026-06-17 10:51:39.689] [DEBUG] QUERY OK db=22.9ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "749", "ram_free_mb", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305331, itemkey: "ram_free_mb", value: "749", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.691] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:49Z", "value" => "WIFI"} [2026-06-17 10:51:39.734] [DEBUG] QUERY OK db=40.5ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "WIFI", "network_type", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305332, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.734] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:49Z", "value" => "true"} [2026-06-17 10:51:39.758] [DEBUG] QUERY OK db=21.1ms queue=2.4ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "true", "kiosk_active", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305333, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.762] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:49Z", "value" => ""} [2026-06-17 10:51:39.786] [DEBUG] QUERY OK db=23.1ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:49Z", "sim_operator", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305334, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.786] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"} [2026-06-17 10:51:39.810] [DEBUG] QUERY OK db=23.9ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "UNKNOWN", "sim_number", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305335, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.811] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"} [2026-06-17 10:51:39.846] [DEBUG] QUERY OK db=35.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "UNKNOWN", "sim_iccid", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305336, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.847] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"} [2026-06-17 10:51:39.869] [DEBUG] QUERY OK db=22.3ms queue=0.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "UNKNOWN", "sim_imsi", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305337, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.870] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"} [2026-06-17 10:51:39.899] [DEBUG] QUERY OK db=27.3ms queue=1.5ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "UNKNOWN", "sim_iccid2", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305338, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.899] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:49Z", "value" => "UNKNOWN"} [2026-06-17 10:51:39.929] [DEBUG] QUERY OK db=27.3ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "UNKNOWN", "sim_imsi2", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305339, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.930] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:49Z", "value" => "6"} [2026-06-17 10:51:39.960] [DEBUG] QUERY OK db=26.7ms queue=2.2ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "6", "data_usage_mb", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305340, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.960] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:49Z", "value" => "0"} [2026-06-17 10:51:39.979] [DEBUG] QUERY OK db=18.4ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "0", "mobile_data_mb", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:39.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305341, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:39.981] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:40.003] [DEBUG] QUERY OK db=19.8ms queue=1.0ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39200, ~N[2026-06-17 10:51:39], ~N[2026-06-17 10:51:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:40.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305342, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:49Z", message: nil, status_log_id: 39200, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:39], updated_at: ~N[2026-06-17 10:51:39]}} [2026-06-17 10:51:40.008] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=27.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:40.010] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:39]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:43.073] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:43.073] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:50:53Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:50:53Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:50:53Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:50:53Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:50:53Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:50:53Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:50:53Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:50:53Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:50:53Z","vendor":"MoreFun"} [2026-06-17 10:51:43.075] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:50:53Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:50:53Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:50:53Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:50:53Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:50:53Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:50:53Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:50:53Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:50:53Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:53Z", "vendor" => "MoreFun"} [2026-06-17 10:51:43.075] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 10:51:43.075] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:43.075] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:51:43.076] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1119.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-06-17 10:51:43.077] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=116.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:51:43.079] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms 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-06-17 10:51:43.081] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.7ms idle=1.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-06-17 10:51:43.082] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms idle=2.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:51:43.122] [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` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:51:43.124] [DEBUG] QUERY OK db=0.6ms queue=0.8ms idle=1932.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 ["372916040000000"] [2026-06-17 10:51:43.124] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:51:43.126] [DEBUG] QUERY OK source="pos_terminal_data" db=1.6ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:51:43.128] [DEBUG] QUERY OK source="address" db=1.9ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:51:43.128] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:51:43.129] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:51:43.144] [DEBUG] QUERY OK db=13.0ms queue=1.0ms 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", "a292795fe34d4bbeefec5b46614f2478b8276f9017dee54374a1d49757b2656e", 802, 940, ~U[2026-06-17 10:51:43Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:51:43.145] [INFO ] AutoPushService: Created push log 29739 for MF919 params.zip [2026-06-17 10:51:43.145] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 802, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:51:43.146] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:51:43.146] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:51:43.148] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=18.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-06-17 10:51:43.154] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:51:43.183] [DEBUG] QUERY OK db=26.3ms queue=0.9ms idle=11.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", "542c287a2711e8cf9d3eb24e11981e8b7da8954f3ceb16e4362c544a4dde09f0", 1764, 17947, ~U[2026-06-17 10:51:43Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:51:43.183] [INFO ] AutoPushService: Created push log 29740 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:51:43.184] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1764, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:51:43.184] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:51:43.184] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:51:43.186] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.2ms idle=35.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-06-17 10:51:43.186] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:51:43.188] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:51:43.188] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:51:43.191] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:51:43.191] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:51:43.192] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:51:43.194] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.8ms idle=6.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-06-17 10:51:43.194] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:51:43.194] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:51:43.195] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:43.258] [DEBUG] QUERY OK source="tms_terminals" db=21.6ms queue=41.1ms idle=1.7ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:51:43], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:51:43.258] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:43.259] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:51:43.259] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:51:43.259] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:51:43.259] [INFO ] Event published: terminal_updated [2026-06-17 10:51:43.264] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.7ms idle=67.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-06-17 10:51:43], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:51:43.266] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:51:43.267] [DEBUG] QUERY OK source="terminal_group_rules" db=0.8ms 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-06-17 10:51:43.267] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:51:43.318] [DEBUG] QUERY OK source="tms_terminals" db=12.0ms queue=41.9ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", ~N[2026-06-17 10:51:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:43.319] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:43.320] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=52.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:43.387] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms queue=41.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:43.418] [DEBUG] QUERY OK db=30.7ms queue=0.1ms idle=67.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:50:53Z", ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:43.419] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39201, oid: "organization_id", upload_time: "2026-06-17T10:50:53Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]} [2026-06-17 10:51:43.419] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:50:53Z", "value" => "online"} [2026-06-17 10:51:43.430] [DEBUG] QUERY OK db=11.4ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:50:53Z", "online", "status", 39201, ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:43.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305343, itemkey: "status", value: "online", timestamp: "2026-06-17T10:50:53Z", message: "Terminal status update", status_log_id: 39201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]}} [2026-06-17 10:51:43.431] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:51:43.431] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:50:53Z", "value" => "42"} [2026-06-17 10:51:43.431] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 3 terminals [2026-06-17 10:51:43.455] [DEBUG] QUERY OK db=23.2ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:50:53Z", "42", "battery", 39201, ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:43.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305344, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:50:53Z", message: "Battery level", status_log_id: 39201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]}} [2026-06-17 10:51:43.455] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:50:53Z", "value" => "online"} [2026-06-17 10:51:43.498] [DEBUG] QUERY OK db=42.7ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:50:53Z", "online", "network", 39201, ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:43.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305345, itemkey: "network", value: "online", timestamp: "2026-06-17T10:50:53Z", message: "Network connectivity", status_log_id: 39201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]}} [2026-06-17 10:51:43.499] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:51:43.499] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 3 terminals [2026-06-17 10:51:43.499] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:50:53Z", "value" => "0"} [2026-06-17 10:51:43.511] [DEBUG] QUERY OK db=11.2ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:50:53Z", "0", "cpu", 39201, ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:43.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305346, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:50:53Z", message: "CPU usage percentage", status_log_id: 39201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]}} [2026-06-17 10:51:43.512] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:50:53Z", "value" => ""} [2026-06-17 10:51:43.582] [DEBUG] QUERY OK db=27.0ms queue=41.9ms idle=2.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:50:53Z", "parameter_config", 39201, ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:43.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305347, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T10:50:53Z", message: "Current parameters version", status_log_id: 39201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]}} [2026-06-17 10:51:43.583] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:50:53Z", "value" => ""} [2026-06-17 10:51:43.644] [DEBUG] QUERY OK db=19.9ms queue=40.9ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:50:53Z", "emv_config", 39201, ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:43.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305348, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T10:50:53Z", message: "Current EMV config version", status_log_id: 39201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]}} [2026-06-17 10:51:43.645] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:50:53Z", "value" => ""} [2026-06-17 10:51:43.662] [DEBUG] QUERY OK db=15.9ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:50:53Z", "keys_config", 39201, ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:43.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305349, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:50:53Z", message: "Current keys config version", status_log_id: 39201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]}} [2026-06-17 10:51:43.662] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:50:53Z", "value" => ""} [2026-06-17 10:51:43.674] [DEBUG] QUERY OK db=11.2ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:50:53Z", "application", 39201, ~N[2026-06-17 10:51:43], ~N[2026-06-17 10:51:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:43.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305350, itemkey: "application", value: nil, timestamp: "2026-06-17T10:50:53Z", message: "Current application version", status_log_id: 39201, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:43], updated_at: ~N[2026-06-17 10:51:43]}} [2026-06-17 10:51:43.676] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:50:53Z"} [2026-06-17 10:51:43.677] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:50:53Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 19, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:51:43.678] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.1ms idle=14.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:43.679] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:43]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:45.413] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:45.413] [INFO ] Incoming JSON payload: {"oid":"36ea95e5-f129-485e-a10d-66719126d204","sn":"98251226730002","uploadTime":"2026-06-17T10:50:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"ram_free_mb","value":"747","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:50:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:50:55Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:45.417] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "36ea95e5-f129-485e-a10d-66719126d204", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:55Z", "value" => "747"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:55Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:50:55Z", "vendor" => "morefun"} [2026-06-17 10:51:45.417] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:45.417] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:45.417] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:45.424] [DEBUG] QUERY OK source="parameter_templates" db=6.8ms idle=451.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-06-17 10:51:45.427] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=0.1ms idle=236.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-06-17 10:51:45.427] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:45.431] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:45.461] [DEBUG] QUERY OK source="tms_terminals" db=29.6ms queue=0.1ms idle=4.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:51:45], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:51:45.462] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:45.462] [INFO ] Event published: terminal_updated [2026-06-17 10:51:45.462] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:51:45.462] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:51:45.462] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:51:45.463] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms idle=31.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-06-17 10:51:45], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:51:45.471] [DEBUG] QUERY OK source="tms_terminals" db=7.4ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:51:45.473] [DEBUG] QUERY OK source="terminal_group_rules" db=1.1ms idle=0.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-06-17 10:51:45.473] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:51:45.518] [DEBUG] QUERY OK source="tms_terminals" db=13.3ms queue=40.6ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", ~N[2026-06-17 10:51:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:45.518] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:45.520] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:45.578] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms queue=41.7ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:45.604] [DEBUG] QUERY OK db=25.8ms idle=58.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "36ea95e5-f129-485e-a10d-66719126d204", "2026-06-17T10:50:55Z", ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:45.605] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39202, oid: "36ea95e5-f129-485e-a10d-66719126d204", upload_time: "2026-06-17T10:50:55Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]} [2026-06-17 10:51:45.605] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:50:55Z", "value" => "morefun"} [2026-06-17 10:51:45.658] [DEBUG] QUERY OK db=10.9ms queue=41.2ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "morefun", "vendor", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305351, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.658] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:50:55Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:45.713] [DEBUG] QUERY OK db=10.8ms queue=43.0ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "kiosk_launcher", "model", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305352, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.714] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:50:55Z", "value" => "1.0"} [2026-06-17 10:51:45.746] [DEBUG] QUERY OK db=31.1ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "1.0", "app_version", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305353, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.746] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:50:55Z", "value" => "13"} [2026-06-17 10:51:45.770] [DEBUG] QUERY OK db=23.6ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "13", "android_version", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305354, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.771] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:50:55Z", "value" => "747"} [2026-06-17 10:51:45.793] [DEBUG] QUERY OK db=21.5ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "747", "ram_free_mb", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305355, itemkey: "ram_free_mb", value: "747", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.793] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:50:55Z", "value" => "WIFI"} [2026-06-17 10:51:45.808] [DEBUG] QUERY OK db=14.7ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "WIFI", "network_type", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305356, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.809] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:50:55Z", "value" => "true"} [2026-06-17 10:51:45.835] [DEBUG] QUERY OK db=25.5ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "true", "kiosk_active", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305357, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.835] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:50:55Z", "value" => ""} [2026-06-17 10:51:45.875] [DEBUG] QUERY OK db=39.4ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:50:55Z", "sim_operator", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305358, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.875] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"} [2026-06-17 10:51:45.895] [DEBUG] QUERY OK db=15.6ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "UNKNOWN", "sim_number", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305359, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.897] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"} [2026-06-17 10:51:45.919] [DEBUG] QUERY OK db=15.9ms queue=0.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "UNKNOWN", "sim_iccid", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305360, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.920] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"} [2026-06-17 10:51:45.948] [DEBUG] QUERY OK db=28.0ms queue=0.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "UNKNOWN", "sim_imsi", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305361, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.949] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"} [2026-06-17 10:51:45.979] [DEBUG] QUERY OK db=30.0ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "UNKNOWN", "sim_iccid2", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:45.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305362, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:45.982] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:50:55Z", "value" => "UNKNOWN"} [2026-06-17 10:51:46.004] [DEBUG] QUERY OK db=21.0ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "UNKNOWN", "sim_imsi2", 39202, ~N[2026-06-17 10:51:45], ~N[2026-06-17 10:51:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:46.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305363, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:45], updated_at: ~N[2026-06-17 10:51:45]}} [2026-06-17 10:51:46.004] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:50:55Z", "value" => "6"} [2026-06-17 10:51:46.016] [DEBUG] QUERY OK db=11.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "6", "data_usage_mb", 39202, ~N[2026-06-17 10:51:46], ~N[2026-06-17 10:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:46.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305364, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:46], updated_at: ~N[2026-06-17 10:51:46]}} [2026-06-17 10:51:46.017] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:50:55Z", "value" => "0"} [2026-06-17 10:51:46.070] [DEBUG] QUERY OK db=52.1ms queue=0.3ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "0", "mobile_data_mb", 39202, ~N[2026-06-17 10:51:46], ~N[2026-06-17 10:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:46.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305365, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:46], updated_at: ~N[2026-06-17 10:51:46]}} [2026-06-17 10:51:46.071] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:50:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:46.148] [DEBUG] QUERY OK db=74.7ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:50:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39202, ~N[2026-06-17 10:51:46], ~N[2026-06-17 10:51:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:46.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305366, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:50:55Z", message: nil, status_log_id: 39202, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:46], updated_at: ~N[2026-06-17 10:51:46]}} [2026-06-17 10:51:46.154] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=83.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:46.156] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:46.577] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:50:36Z"} [2026-06-17 10:51:46.578] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:50:36Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 14, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:51:51.411] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:51.411] [INFO ] Incoming JSON payload: {"oid":"8973b1a1-02f8-49ce-911a-6f4de6e109c0","sn":"98251226730002","uploadTime":"2026-06-17T10:51:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"ram_free_mb","value":"745","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51:01Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:51.412] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8973b1a1-02f8-49ce-911a-6f4de6e109c0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:01Z", "value" => "745"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:01Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:01Z", "vendor" => "morefun"} [2026-06-17 10:51:51.413] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:51.413] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:51.413] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:51.416] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=431.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-06-17 10:51:51.418] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=226.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-06-17 10:51:51.418] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:51.421] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:51.421] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:51.444] [DEBUG] QUERY OK source="tms_terminals" db=22.6ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:51:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:51.444] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:51.445] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:51.474] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:51.508] [DEBUG] QUERY OK db=32.5ms queue=1.0ms idle=29.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8973b1a1-02f8-49ce-911a-6f4de6e109c0", "2026-06-17T10:51:01Z", ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:51.509] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39203, oid: "8973b1a1-02f8-49ce-911a-6f4de6e109c0", upload_time: "2026-06-17T10:51:01Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]} [2026-06-17 10:51:51.509] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:01Z", "value" => "morefun"} [2026-06-17 10:51:51.532] [DEBUG] QUERY OK db=23.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "morefun", "vendor", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305367, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.533] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:01Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:51.558] [DEBUG] QUERY OK db=24.9ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "kiosk_launcher", "model", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305368, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.560] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:01Z", "value" => "1.0"} [2026-06-17 10:51:51.585] [DEBUG] QUERY OK db=25.3ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "1.0", "app_version", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305369, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.586] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:01Z", "value" => "13"} [2026-06-17 10:51:51.609] [DEBUG] QUERY OK db=23.0ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "13", "android_version", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305370, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.610] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:01Z", "value" => "745"} [2026-06-17 10:51:51.639] [DEBUG] QUERY OK db=28.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "745", "ram_free_mb", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305371, itemkey: "ram_free_mb", value: "745", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.640] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:01Z", "value" => "WIFI"} [2026-06-17 10:51:51.673] [DEBUG] QUERY OK db=32.2ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "WIFI", "network_type", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305372, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.673] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:01Z", "value" => "true"} [2026-06-17 10:51:51.690] [DEBUG] QUERY OK db=16.2ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "true", "kiosk_active", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305373, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.691] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:01Z", "value" => ""} [2026-06-17 10:51:51.725] [DEBUG] QUERY OK db=33.6ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:01Z", "sim_operator", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305374, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.726] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"} [2026-06-17 10:51:51.751] [DEBUG] QUERY OK db=25.0ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "UNKNOWN", "sim_number", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305375, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.751] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"} [2026-06-17 10:51:51.774] [DEBUG] QUERY OK db=22.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "UNKNOWN", "sim_iccid", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305376, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.775] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"} [2026-06-17 10:51:51.800] [DEBUG] QUERY OK db=24.6ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "UNKNOWN", "sim_imsi", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305377, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.801] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"} [2026-06-17 10:51:51.825] [DEBUG] QUERY OK db=23.0ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "UNKNOWN", "sim_iccid2", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305378, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.825] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:01Z", "value" => "UNKNOWN"} [2026-06-17 10:51:51.863] [DEBUG] QUERY OK db=37.7ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "UNKNOWN", "sim_imsi2", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305379, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.864] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:01Z", "value" => "6"} [2026-06-17 10:51:51.901] [DEBUG] QUERY OK db=37.1ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "6", "data_usage_mb", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305380, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.902] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:01Z", "value" => "0"} [2026-06-17 10:51:51.931] [DEBUG] QUERY OK db=27.0ms queue=1.7ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "0", "mobile_data_mb", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305381, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.934] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:51.961] [DEBUG] QUERY OK db=26.3ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39203, ~N[2026-06-17 10:51:51], ~N[2026-06-17 10:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:51.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305382, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:01Z", message: nil, status_log_id: 39203, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:51], updated_at: ~N[2026-06-17 10:51:51]}} [2026-06-17 10:51:51.964] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=32.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:51.965] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:51:57.513] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:51:57.513] [INFO ] Incoming JSON payload: {"oid":"099fe0b8-f512-40a0-aa25-4f2a69a0cd44","sn":"98251226730002","uploadTime":"2026-06-17T10:51:07Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"ram_free_mb","value":"745","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:07Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:51:57.514] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "099fe0b8-f512-40a0-aa25-4f2a69a0cd44", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:07Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:07Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:07Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:07Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:07Z", "value" => "745"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:07Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:07Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:07Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:07Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:07Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:07Z", "vendor" => "morefun"} [2026-06-17 10:51:57.518] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:51:57.521] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:51:57.521] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:51:57.525] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms queue=0.1ms idle=1323.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-06-17 10:51:57.527] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=521.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.`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-06-17 10:51:57.528] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:51:57.531] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:51:57.534] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:51:57.593] [DEBUG] QUERY OK source="tms_terminals" db=15.6ms queue=42.9ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:51:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:51:57.594] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:51:57.595] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=63.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:51:57.611] [DEBUG] QUERY OK source="tms_terminals" db=15.7ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:51:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:51:57.648] [DEBUG] QUERY OK db=34.1ms queue=0.1ms idle=18.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "099fe0b8-f512-40a0-aa25-4f2a69a0cd44", "2026-06-17T10:51:07Z", ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:51:57.648] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39204, oid: "099fe0b8-f512-40a0-aa25-4f2a69a0cd44", upload_time: "2026-06-17T10:51:07Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]} [2026-06-17 10:51:57.648] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:07Z", "value" => "morefun"} [2026-06-17 10:51:57.671] [DEBUG] QUERY OK db=22.6ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "morefun", "vendor", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305383, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.672] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:07Z", "value" => "kiosk_launcher"} [2026-06-17 10:51:57.696] [DEBUG] QUERY OK db=21.2ms queue=1.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "kiosk_launcher", "model", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305384, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.696] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:07Z", "value" => "1.0"} [2026-06-17 10:51:57.710] [DEBUG] QUERY OK db=13.3ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "1.0", "app_version", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305385, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.710] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:07Z", "value" => "13"} [2026-06-17 10:51:57.741] [DEBUG] QUERY OK db=28.6ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "13", "android_version", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305386, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.742] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:07Z", "value" => "745"} [2026-06-17 10:51:57.779] [DEBUG] QUERY OK db=32.1ms queue=4.5ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "745", "ram_free_mb", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305387, itemkey: "ram_free_mb", value: "745", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.779] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:07Z", "value" => "WIFI"} [2026-06-17 10:51:57.799] [DEBUG] QUERY OK db=18.7ms queue=0.4ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "WIFI", "network_type", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305388, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.799] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:07Z", "value" => "true"} [2026-06-17 10:51:57.811] [DEBUG] QUERY OK db=11.2ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "true", "kiosk_active", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305389, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.811] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:07Z", "value" => ""} [2026-06-17 10:51:57.839] [DEBUG] QUERY OK db=23.3ms queue=1.3ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:07Z", "sim_operator", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305390, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.840] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"} [2026-06-17 10:51:57.879] [DEBUG] QUERY OK db=37.7ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "UNKNOWN", "sim_number", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305391, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.881] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"} [2026-06-17 10:51:57.903] [DEBUG] QUERY OK db=21.7ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "UNKNOWN", "sim_iccid", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305392, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.904] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"} [2026-06-17 10:51:57.916] [DEBUG] QUERY OK db=11.7ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "UNKNOWN", "sim_imsi", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305393, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.918] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"} [2026-06-17 10:51:57.958] [DEBUG] QUERY OK db=39.7ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "UNKNOWN", "sim_iccid2", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:57.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305394, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:57.969] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:07Z", "value" => "UNKNOWN"} [2026-06-17 10:51:58.004] [DEBUG] QUERY OK db=34.4ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "UNKNOWN", "sim_imsi2", 39204, ~N[2026-06-17 10:51:57], ~N[2026-06-17 10:51:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:58.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305395, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:57], updated_at: ~N[2026-06-17 10:51:57]}} [2026-06-17 10:51:58.004] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:07Z", "value" => "6"} [2026-06-17 10:51:58.017] [DEBUG] QUERY OK db=12.5ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "6", "data_usage_mb", 39204, ~N[2026-06-17 10:51:58], ~N[2026-06-17 10:51:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:58.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305396, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:58], updated_at: ~N[2026-06-17 10:51:58]}} [2026-06-17 10:51:58.018] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:07Z", "value" => "0"} [2026-06-17 10:51:58.063] [DEBUG] QUERY OK db=44.8ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:07Z", "0", "mobile_data_mb", 39204, ~N[2026-06-17 10:51:58], ~N[2026-06-17 10:51:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:58.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305397, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:58], updated_at: ~N[2026-06-17 10:51:58]}} [2026-06-17 10:51:58.064] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:51:58.170] [DEBUG] QUERY OK db=86.2ms queue=3.2ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39204, ~N[2026-06-17 10:51:58], ~N[2026-06-17 10:51:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:51:58.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305398, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:07Z", message: nil, status_log_id: 39204, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:51:58], updated_at: ~N[2026-06-17 10:51:58]}} [2026-06-17 10:51:58.178] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms queue=0.3ms idle=109.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:51:58.179] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:51:57]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:03.563] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:50:53Z"} [2026-06-17 10:52:03.563] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:50:53Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 20, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:52:03.856] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:03.856] [INFO ] Incoming JSON payload: {"oid":"8495fbe0-7d1e-4c8f-b6c2-94e1476e1f55","sn":"98251226730002","uploadTime":"2026-06-17T10:51:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"ram_free_mb","value":"746","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:03.873] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8495fbe0-7d1e-4c8f-b6c2-94e1476e1f55", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:13Z", "value" => "746"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:13Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:13Z", "vendor" => "morefun"} [2026-06-17 10:52:03.879] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:03.879] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:03.879] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:03.883] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms idle=1688.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:52:03.889] [DEBUG] QUERY OK source="parameter_templates" db=5.7ms idle=798.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-06-17 10:52:03.889] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:03.894] [DEBUG] QUERY OK source="tms_terminals" db=4.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:03.894] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:03.915] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:03.915] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:03.934] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms queue=14.4ms idle=21.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:03.974] [DEBUG] QUERY OK source="tms_terminals" db=36.3ms idle=22.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:04.003] [DEBUG] QUERY OK db=29.2ms idle=39.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8495fbe0-7d1e-4c8f-b6c2-94e1476e1f55", "2026-06-17T10:51:13Z", ~N[2026-06-17 10:52:03], ~N[2026-06-17 10:52:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:04.004] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39205, oid: "8495fbe0-7d1e-4c8f-b6c2-94e1476e1f55", upload_time: "2026-06-17T10:51:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:03], updated_at: ~N[2026-06-17 10:52:03]} [2026-06-17 10:52:04.004] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:13Z", "value" => "morefun"} [2026-06-17 10:52:04.035] [DEBUG] QUERY OK db=30.6ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "morefun", "vendor", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305399, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.035] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:13Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:04.083] [DEBUG] QUERY OK db=34.9ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "kiosk_launcher", "model", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305400, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.089] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:13Z", "value" => "1.0"} [2026-06-17 10:52:04.156] [DEBUG] QUERY OK db=55.2ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "1.0", "app_version", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305401, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.157] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:13Z", "value" => "13"} [2026-06-17 10:52:04.200] [DEBUG] QUERY OK db=26.0ms queue=5.0ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "13", "android_version", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305402, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.201] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:13Z", "value" => "746"} [2026-06-17 10:52:04.243] [DEBUG] QUERY OK db=40.8ms decode=0.7ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "746", "ram_free_mb", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305403, itemkey: "ram_free_mb", value: "746", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.250] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:13Z", "value" => "WIFI"} [2026-06-17 10:52:04.268] [DEBUG] QUERY OK db=18.0ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "WIFI", "network_type", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305404, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.269] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:13Z", "value" => "true"} [2026-06-17 10:52:04.296] [DEBUG] QUERY OK db=26.6ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "true", "kiosk_active", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305405, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.296] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:13Z", "value" => ""} [2026-06-17 10:52:04.329] [DEBUG] QUERY OK db=32.4ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:13Z", "sim_operator", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305406, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.329] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"} [2026-06-17 10:52:04.355] [DEBUG] QUERY OK db=25.8ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "UNKNOWN", "sim_number", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305407, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.365] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"} [2026-06-17 10:52:04.393] [DEBUG] QUERY OK db=27.3ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "UNKNOWN", "sim_iccid", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305408, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.393] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"} [2026-06-17 10:52:04.429] [DEBUG] QUERY OK db=25.8ms queue=9.6ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "UNKNOWN", "sim_imsi", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305409, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.430] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"} [2026-06-17 10:52:04.469] [DEBUG] QUERY OK db=38.6ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "UNKNOWN", "sim_iccid2", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305410, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.469] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:13Z", "value" => "UNKNOWN"} [2026-06-17 10:52:04.515] [DEBUG] QUERY OK db=45.3ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "UNKNOWN", "sim_imsi2", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305411, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.515] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:13Z", "value" => "6"} [2026-06-17 10:52:04.543] [DEBUG] QUERY OK db=20.8ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "6", "data_usage_mb", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305412, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.544] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:13Z", "value" => "0"} [2026-06-17 10:52:04.588] [DEBUG] QUERY OK db=33.9ms queue=6.2ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "0", "mobile_data_mb", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305413, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.594] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:04.635] [DEBUG] QUERY OK db=38.5ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39205, ~N[2026-06-17 10:52:04], ~N[2026-06-17 10:52:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:04.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305414, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:13Z", message: nil, status_log_id: 39205, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:04], updated_at: ~N[2026-06-17 10:52:04]}} [2026-06-17 10:52:04.645] [DEBUG] QUERY OK source="tms_terminals" db=7.0ms idle=50.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:04.652] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:03]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:09.929] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:09.929] [INFO ] Incoming JSON payload: {"oid":"4c76ac8c-d7eb-41a4-8ce8-f283bd2f4923","sn":"98251226730002","uploadTime":"2026-06-17T10:51:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"ram_free_mb","value":"743","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51:19Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:09.933] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4c76ac8c-d7eb-41a4-8ce8-f283bd2f4923", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:19Z", "value" => "743"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:19Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:19Z", "vendor" => "morefun"} [2026-06-17 10:52:09.933] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:09.935] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:09.936] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:09.936] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1745.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-06-17 10:52:09.940] [DEBUG] QUERY OK source="parameter_templates" db=3.5ms idle=793.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-06-17 10:52:09.940] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:09.942] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:09.945] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:09.970] [DEBUG] QUERY OK source="tms_terminals" db=19.5ms idle=10.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:09], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:09.971] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:09.974] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:09.992] [DEBUG] QUERY OK source="tms_terminals" db=17.7ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:09], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:10.018] [DEBUG] QUERY OK db=25.6ms idle=18.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4c76ac8c-d7eb-41a4-8ce8-f283bd2f4923", "2026-06-17T10:51:19Z", ~N[2026-06-17 10:52:09], ~N[2026-06-17 10:52:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:10.018] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39206, oid: "4c76ac8c-d7eb-41a4-8ce8-f283bd2f4923", upload_time: "2026-06-17T10:51:19Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:09], updated_at: ~N[2026-06-17 10:52:09]} [2026-06-17 10:52:10.018] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:19Z", "value" => "morefun"} [2026-06-17 10:52:10.064] [DEBUG] QUERY OK db=45.6ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "morefun", "vendor", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305415, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.066] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:19Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:10.086] [DEBUG] QUERY OK db=19.7ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "kiosk_launcher", "model", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305416, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.087] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:19Z", "value" => "1.0"} [2026-06-17 10:52:10.119] [DEBUG] QUERY OK db=29.7ms queue=2.6ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "1.0", "app_version", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305417, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.120] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:19Z", "value" => "13"} [2026-06-17 10:52:10.145] [DEBUG] QUERY OK db=25.5ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "13", "android_version", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305418, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.146] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:19Z", "value" => "743"} [2026-06-17 10:52:10.186] [DEBUG] QUERY OK db=39.9ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "743", "ram_free_mb", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305419, itemkey: "ram_free_mb", value: "743", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.186] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:19Z", "value" => "WIFI"} [2026-06-17 10:52:10.217] [DEBUG] QUERY OK db=30.3ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "WIFI", "network_type", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305420, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.218] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:19Z", "value" => "true"} [2026-06-17 10:52:10.250] [DEBUG] QUERY OK db=32.3ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "true", "kiosk_active", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305421, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.251] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:19Z", "value" => ""} [2026-06-17 10:52:10.281] [DEBUG] QUERY OK db=29.7ms queue=0.3ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:19Z", "sim_operator", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305422, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.281] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"} [2026-06-17 10:52:10.298] [DEBUG] QUERY OK db=15.5ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "UNKNOWN", "sim_number", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305423, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.302] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"} [2026-06-17 10:52:10.321] [DEBUG] QUERY OK db=14.7ms queue=1.2ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "UNKNOWN", "sim_iccid", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305424, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.321] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"} [2026-06-17 10:52:10.351] [DEBUG] QUERY OK db=28.9ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "UNKNOWN", "sim_imsi", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305425, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.356] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"} [2026-06-17 10:52:10.386] [DEBUG] QUERY OK db=30.0ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "UNKNOWN", "sim_iccid2", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305426, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.389] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:19Z", "value" => "UNKNOWN"} [2026-06-17 10:52:10.406] [DEBUG] QUERY OK db=17.0ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "UNKNOWN", "sim_imsi2", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305427, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.407] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:19Z", "value" => "6"} [2026-06-17 10:52:10.425] [DEBUG] QUERY OK db=13.2ms queue=4.7ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "6", "data_usage_mb", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305428, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.425] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:19Z", "value" => "0"} [2026-06-17 10:52:10.449] [DEBUG] QUERY OK db=22.8ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "0", "mobile_data_mb", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305429, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.450] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:10.475] [DEBUG] QUERY OK db=24.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39206, ~N[2026-06-17 10:52:10], ~N[2026-06-17 10:52:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:10.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305430, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:19Z", message: nil, status_log_id: 39206, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:10], updated_at: ~N[2026-06-17 10:52:10]}} [2026-06-17 10:52:10.478] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=26.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:10.479] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:09]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:16.022] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:16.022] [INFO ] Incoming JSON payload: {"oid":"6d09941b-6baa-4ff2-879c-7bfba15b28aa","sn":"98251226730002","uploadTime":"2026-06-17T10:51:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"ram_free_mb","value":"741","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:16.024] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6d09941b-6baa-4ff2-879c-7bfba15b28aa", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:26Z", "value" => "741"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:26Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:26Z", "vendor" => "morefun"} [2026-06-17 10:52:16.024] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:16.024] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:16.024] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:16.025] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=846.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-06-17 10:52:16.026] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=830.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.`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-06-17 10:52:16.026] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:16.026] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:16.027] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:16.057] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:16.058] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:16.059] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=31.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:16.084] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:16.109] [DEBUG] QUERY OK db=24.5ms queue=0.1ms idle=25.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6d09941b-6baa-4ff2-879c-7bfba15b28aa", "2026-06-17T10:51:26Z", ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:16.111] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39207, oid: "6d09941b-6baa-4ff2-879c-7bfba15b28aa", upload_time: "2026-06-17T10:51:26Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]} [2026-06-17 10:52:16.111] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:26Z", "value" => "morefun"} [2026-06-17 10:52:16.147] [DEBUG] QUERY OK db=35.4ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "morefun", "vendor", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305431, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.148] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:26Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:16.172] [DEBUG] QUERY OK db=23.7ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "kiosk_launcher", "model", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305432, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.172] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:26Z", "value" => "1.0"} [2026-06-17 10:52:16.197] [DEBUG] QUERY OK db=24.5ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "1.0", "app_version", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305433, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.198] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:26Z", "value" => "13"} [2026-06-17 10:52:16.218] [DEBUG] QUERY OK db=19.7ms queue=0.2ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "13", "android_version", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305434, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.218] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:26Z", "value" => "741"} [2026-06-17 10:52:16.252] [DEBUG] QUERY OK db=32.6ms queue=0.1ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "741", "ram_free_mb", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305435, itemkey: "ram_free_mb", value: "741", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.252] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:26Z", "value" => "WIFI"} [2026-06-17 10:52:16.277] [DEBUG] QUERY OK db=24.7ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "WIFI", "network_type", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305436, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.278] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:26Z", "value" => "true"} [2026-06-17 10:52:16.301] [DEBUG] QUERY OK db=23.0ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "true", "kiosk_active", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305437, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.303] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:26Z", "value" => ""} [2026-06-17 10:52:16.333] [DEBUG] QUERY OK db=29.7ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:26Z", "sim_operator", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305438, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.336] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"} [2026-06-17 10:52:16.358] [DEBUG] QUERY OK db=21.6ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "UNKNOWN", "sim_number", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305439, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.358] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"} [2026-06-17 10:52:16.391] [DEBUG] QUERY OK db=31.1ms queue=0.8ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "UNKNOWN", "sim_iccid", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305440, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.391] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"} [2026-06-17 10:52:16.415] [DEBUG] QUERY OK db=23.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "UNKNOWN", "sim_imsi", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305441, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.415] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"} [2026-06-17 10:52:16.439] [DEBUG] QUERY OK db=23.6ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "UNKNOWN", "sim_iccid2", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305442, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.441] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:26Z", "value" => "UNKNOWN"} [2026-06-17 10:52:16.470] [DEBUG] QUERY OK db=28.2ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "UNKNOWN", "sim_imsi2", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305443, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.471] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:26Z", "value" => "6"} [2026-06-17 10:52:16.497] [DEBUG] QUERY OK db=26.2ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "6", "data_usage_mb", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305444, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.498] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:26Z", "value" => "0"} [2026-06-17 10:52:16.541] [DEBUG] QUERY OK db=43.4ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:26Z", "0", "mobile_data_mb", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305445, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.544] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:16.581] [DEBUG] QUERY OK db=36.2ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39207, ~N[2026-06-17 10:52:16], ~N[2026-06-17 10:52:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:16.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305446, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:26Z", message: nil, status_log_id: 39207, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:16], updated_at: ~N[2026-06-17 10:52:16]}} [2026-06-17 10:52:16.586] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.3ms idle=42.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:16.588] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:20.425] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 10:52:20.425] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T02:02:34Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T02:02:34Z","value":"65"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T02:02:34Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T02:02:34Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T02:02:34Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T02:02:34Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T02:02:34Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T02:02:34Z","value":"3.8.5"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-17T02:02:34Z","vendor":"MoreFun"} [2026-06-17 10:52:20.426] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T02:02:34Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T02:02:34Z", "value" => "65"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T02:02:34Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T02:02:34Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T02:02:34Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T02:02:34Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T02:02:34Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T02:02:34Z", "value" => "3.8.5"}], "sn" => "98250623730001", "uploadTime" => "2026-06-17T02:02:34Z", "vendor" => "MoreFun"} [2026-06-17 10:52:20.426] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.5", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 10:52:20.426] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 10:52:20.426] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 10:52:20.428] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.1ms idle=231.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:52:20.430] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=231.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:52:20.431] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=1.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-06-17 10:52:20.436] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=3.3ms idle=1.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-06-17 10:52:20.439] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms idle=7.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:52:20.477] [DEBUG] QUERY OK source="pos_merchant" db=37.0ms idle=3.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:52:20.479] [DEBUG] QUERY OK db=1.1ms queue=0.7ms idle=1282.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 ["419926360000000"] [2026-06-17 10:52:20.479] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:52:20.481] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms idle=40.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:52:20.482] [DEBUG] QUERY OK source="address" db=0.3ms 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` = ?) [409] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:52:20.482] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 10:52:20.485] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 10:52:20.513] [DEBUG] QUERY OK db=25.1ms 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", "0d0acb6cb8f8a65813a7bd2c1e36eb4a4eca5a9acf698569d1ed81d7eb3a99cc", 1763, 955, ~U[2026-06-17 10:52:20Z], "priv/ota/98250623730001/params.zip", 19, "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-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:52:20.514] [INFO ] AutoPushService: Created push log 29741 for MF919 params.zip [2026-06-17 10:52:20.514] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1763, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:52:20.514] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 10:52:20.514] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 10:52:20.523] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=40.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-06-17 10:52:20.530] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:52:20.558] [DEBUG] QUERY OK db=25.1ms idle=20.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", "b36c1d7af5ad5e066aa1c0470c391f7ce09a8075408e4f318360bf6041d2839d", 1058, 17947, ~U[2026-06-17 10:52:20Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:52:20.558] [INFO ] AutoPushService: Created push log 29742 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:52:20.558] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1058, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:52:20.560] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 10:52:20.563] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 10:52:20.567] [DEBUG] QUERY OK source="config_file_versions" db=3.4ms idle=40.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-06-17 10:52:20.567] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 10:52:20.568] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=9.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:52:20.569] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:52:20.571] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:52:20.571] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:52:20.571] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:52:20.573] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=5.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-06-17 10:52:20.574] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:52:20.574] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 10:52:20.574] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:20.575] [INFO ] Terminal updated: 98250623730001 [2026-06-17 10:52:20.603] [DEBUG] QUERY OK source="tms_terminals" db=27.6ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:20.605] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.5ms idle=28.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-06-17 10:52:20.607] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 10:52:20.608] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms 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-06-17 10:52:20.608] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 10:52:20.609] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:20.640] [DEBUG] QUERY OK source="tms_terminals" db=30.0ms queue=0.5ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:20.664] [DEBUG] QUERY OK db=23.5ms idle=31.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-17T02:02:34Z", ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:20.664] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39208, oid: "organization_id", upload_time: "2026-06-17T02:02:34Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]} [2026-06-17 10:52:20.665] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T02:02:34Z", "value" => "online"} [2026-06-17 10:52:20.700] [DEBUG] QUERY OK db=34.7ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T02:02:34Z", "online", "status", 39208, ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:20.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305447, itemkey: "status", value: "online", timestamp: "2026-06-17T02:02:34Z", message: "Terminal status update", status_log_id: 39208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]}} [2026-06-17 10:52:20.700] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 10:52:20.702] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=36.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:20], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 10:52:20.702] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T02:02:34Z", "value" => "65"} [2026-06-17 10:52:20.702] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:52:20.730] [DEBUG] QUERY OK db=27.7ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T02:02:34Z", "65", "battery", 39208, ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:20.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305448, itemkey: "battery", value: "65", timestamp: "2026-06-17T02:02:34Z", message: "Battery level", status_log_id: 39208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]}} [2026-06-17 10:52:20.730] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T02:02:34Z", "value" => "online"} [2026-06-17 10:52:20.765] [DEBUG] QUERY OK db=34.5ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T02:02:34Z", "online", "network", 39208, ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:20.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305449, itemkey: "network", value: "online", timestamp: "2026-06-17T02:02:34Z", message: "Network connectivity", status_log_id: 39208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]}} [2026-06-17 10:52:20.766] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 10:52:20.767] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=36.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:20], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 10:52:20.767] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T02:02:34Z", "value" => "0"} [2026-06-17 10:52:20.768] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:52:20.791] [DEBUG] QUERY OK db=23.7ms 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-06-17T02:02:34Z", "0", "cpu", 39208, ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:20.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305450, itemkey: "cpu", value: "0", timestamp: "2026-06-17T02:02:34Z", message: "CPU usage percentage", status_log_id: 39208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]}} [2026-06-17 10:52:20.793] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T02:02:34Z", "value" => "1.0.0"} [2026-06-17 10:52:20.826] [DEBUG] QUERY OK db=33.4ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T02:02:34Z", "1.0.0", "parameter_config", 39208, ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:20.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305451, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T02:02:34Z", message: "Current parameters version", status_log_id: 39208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]}} [2026-06-17 10:52:20.827] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T02:02:34Z", "value" => "1.0.1"} [2026-06-17 10:52:20.850] [DEBUG] QUERY OK db=22.3ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T02:02:34Z", "1.0.1", "emv_config", 39208, ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:20.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305452, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T02:02:34Z", message: "Current EMV config version", status_log_id: 39208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]}} [2026-06-17 10:52:20.851] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T02:02:34Z", "value" => ""} [2026-06-17 10:52:20.918] [DEBUG] QUERY OK db=24.1ms queue=42.4ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T02:02:34Z", "keys_config", 39208, ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:20.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305453, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T02:02:34Z", message: "Current keys config version", status_log_id: 39208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]}} [2026-06-17 10:52:20.918] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T02:02:34Z", "value" => "3.8.5"} [2026-06-17 10:52:20.954] [DEBUG] QUERY OK db=35.3ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-06-17T02:02:34Z", "3.8.5", "application", 39208, ~N[2026-06-17 10:52:20], ~N[2026-06-17 10:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:20.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305454, itemkey: "application", value: "3.8.5", timestamp: "2026-06-17T02:02:34Z", message: "Current application version", status_log_id: 39208, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:20], updated_at: ~N[2026-06-17 10:52:20]}} [2026-06-17 10:52:20.956] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:20], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 10:52:20.957] [WARN ] Unexpected async result [2026-06-17 10:52:20.957] [WARN ] Unexpected async result [2026-06-17 10:52:20.958] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:20.960] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:22.107] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:22.107] [INFO ] Incoming JSON payload: {"oid":"56845ede-2ffa-4fe6-86de-8ebcd3fa9b69","sn":"98251226730002","uploadTime":"2026-06-17T10:51:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"ram_free_mb","value":"741","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51:32Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:22.111] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "56845ede-2ffa-4fe6-86de-8ebcd3fa9b69", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:32Z", "value" => "741"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:32Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:32Z", "vendor" => "morefun"} [2026-06-17 10:52:22.112] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:22.112] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:22.113] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:22.116] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms queue=0.7ms idle=1152.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-06-17 10:52:22.118] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=916.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.`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-06-17 10:52:22.118] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:22.121] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:22.121] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:22.149] [DEBUG] QUERY OK source="tms_terminals" db=27.5ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:22.149] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:22.150] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:22.194] [DEBUG] QUERY OK source="tms_terminals" db=42.0ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:22.217] [DEBUG] QUERY OK db=22.2ms queue=0.1ms idle=44.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "56845ede-2ffa-4fe6-86de-8ebcd3fa9b69", "2026-06-17T10:51:32Z", ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:22.217] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39209, oid: "56845ede-2ffa-4fe6-86de-8ebcd3fa9b69", upload_time: "2026-06-17T10:51:32Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]} [2026-06-17 10:52:22.217] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:32Z", "value" => "morefun"} [2026-06-17 10:52:22.242] [DEBUG] QUERY OK db=23.8ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "morefun", "vendor", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305455, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.242] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:32Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:22.309] [DEBUG] QUERY OK db=24.4ms queue=41.8ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "kiosk_launcher", "model", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305456, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.309] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:32Z", "value" => "1.0"} [2026-06-17 10:52:22.332] [DEBUG] QUERY OK db=22.7ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "1.0", "app_version", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305457, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.333] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:32Z", "value" => "13"} [2026-06-17 10:52:22.357] [DEBUG] QUERY OK db=24.1ms queue=0.2ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "13", "android_version", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305458, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.358] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:32Z", "value" => "741"} [2026-06-17 10:52:22.392] [DEBUG] QUERY OK db=33.6ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "741", "ram_free_mb", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305459, itemkey: "ram_free_mb", value: "741", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.392] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:32Z", "value" => "WIFI"} [2026-06-17 10:52:22.417] [DEBUG] QUERY OK db=24.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "WIFI", "network_type", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305460, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.417] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:32Z", "value" => "true"} [2026-06-17 10:52:22.448] [DEBUG] QUERY OK db=30.0ms queue=0.2ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "true", "kiosk_active", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305461, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.448] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:32Z", "value" => ""} [2026-06-17 10:52:22.494] [DEBUG] QUERY OK db=45.5ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:32Z", "sim_operator", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305462, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.495] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"} [2026-06-17 10:52:22.529] [DEBUG] QUERY OK db=33.5ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "UNKNOWN", "sim_number", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305463, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.529] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"} [2026-06-17 10:52:22.554] [DEBUG] QUERY OK db=23.3ms queue=0.4ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "UNKNOWN", "sim_iccid", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305464, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.554] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"} [2026-06-17 10:52:22.575] [DEBUG] QUERY OK db=20.2ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "UNKNOWN", "sim_imsi", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305465, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.576] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"} [2026-06-17 10:52:22.600] [DEBUG] QUERY OK db=23.7ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "UNKNOWN", "sim_iccid2", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305466, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.601] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:32Z", "value" => "UNKNOWN"} [2026-06-17 10:52:22.635] [DEBUG] QUERY OK db=32.9ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "UNKNOWN", "sim_imsi2", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305467, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.636] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:32Z", "value" => "6"} [2026-06-17 10:52:22.659] [DEBUG] QUERY OK db=23.2ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "6", "data_usage_mb", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305468, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.660] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:32Z", "value" => "0"} [2026-06-17 10:52:22.695] [DEBUG] QUERY OK db=33.7ms queue=0.3ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "0", "mobile_data_mb", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305469, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.697] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:22.721] [DEBUG] QUERY OK db=23.2ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39209, ~N[2026-06-17 10:52:22], ~N[2026-06-17 10:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:22.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305470, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:32Z", message: nil, status_log_id: 39209, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:22], updated_at: ~N[2026-06-17 10:52:22]}} [2026-06-17 10:52:22.724] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=28.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:22.725] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:22]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:28.182] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:28.182] [INFO ] Incoming JSON payload: {"oid":"bdc0da51-5100-4e9d-9e4b-9423264e3fd1","sn":"98251226730002","uploadTime":"2026-06-17T10:51:38Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"ram_free_mb","value":"827","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:38Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51:38Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:28.183] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bdc0da51-5100-4e9d-9e4b-9423264e3fd1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:38Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:38Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:38Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:38Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:38Z", "value" => "827"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:38Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:38Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:38Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:38Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:38Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:38Z", "vendor" => "morefun"} [2026-06-17 10:52:28.183] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:28.184] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:28.184] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:28.185] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1968.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:52:28.185] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=964.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-06-17 10:52:28.185] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:28.186] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:28.187] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:28.206] [DEBUG] QUERY OK source="tms_terminals" db=18.3ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:28.206] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:28.207] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=19.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:28.239] [DEBUG] QUERY OK source="tms_terminals" db=31.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:28.264] [DEBUG] QUERY OK db=24.9ms idle=14.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "bdc0da51-5100-4e9d-9e4b-9423264e3fd1", "2026-06-17T10:51:38Z", ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:28.264] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39210, oid: "bdc0da51-5100-4e9d-9e4b-9423264e3fd1", upload_time: "2026-06-17T10:51:38Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]} [2026-06-17 10:52:28.265] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:38Z", "value" => "morefun"} [2026-06-17 10:52:28.288] [DEBUG] QUERY OK db=22.5ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "morefun", "vendor", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305471, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.289] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:38Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:28.310] [DEBUG] QUERY OK db=20.7ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "kiosk_launcher", "model", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305472, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.311] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:38Z", "value" => "1.0"} [2026-06-17 10:52:28.351] [DEBUG] QUERY OK db=39.3ms queue=0.1ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "1.0", "app_version", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305473, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.351] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:38Z", "value" => "13"} [2026-06-17 10:52:28.374] [DEBUG] QUERY OK db=22.6ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "13", "android_version", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305474, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.375] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:38Z", "value" => "827"} [2026-06-17 10:52:28.400] [DEBUG] QUERY OK db=24.3ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "827", "ram_free_mb", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305475, itemkey: "ram_free_mb", value: "827", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.400] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:38Z", "value" => "WIFI"} [2026-06-17 10:52:28.431] [DEBUG] QUERY OK db=30.5ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "WIFI", "network_type", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305476, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.431] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:38Z", "value" => "true"} [2026-06-17 10:52:28.456] [DEBUG] QUERY OK db=24.1ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "true", "kiosk_active", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305477, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.456] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:38Z", "value" => ""} [2026-06-17 10:52:28.478] [DEBUG] QUERY OK db=21.0ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:38Z", "sim_operator", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305478, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.479] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"} [2026-06-17 10:52:28.508] [DEBUG] QUERY OK db=29.0ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "UNKNOWN", "sim_number", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305479, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.508] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"} [2026-06-17 10:52:28.533] [DEBUG] QUERY OK db=24.2ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "UNKNOWN", "sim_iccid", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305480, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.534] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"} [2026-06-17 10:52:28.556] [DEBUG] QUERY OK db=22.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "UNKNOWN", "sim_imsi", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305481, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.557] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"} [2026-06-17 10:52:28.570] [DEBUG] QUERY OK db=12.9ms queue=0.1ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "UNKNOWN", "sim_iccid2", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305482, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.570] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:38Z", "value" => "UNKNOWN"} [2026-06-17 10:52:28.597] [DEBUG] QUERY OK db=26.7ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "UNKNOWN", "sim_imsi2", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305483, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.598] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:38Z", "value" => "6"} [2026-06-17 10:52:28.623] [DEBUG] QUERY OK db=24.6ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "6", "data_usage_mb", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305484, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.624] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:38Z", "value" => "0"} [2026-06-17 10:52:28.651] [DEBUG] QUERY OK db=26.5ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "0", "mobile_data_mb", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305485, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.652] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:28.669] [DEBUG] QUERY OK db=16.1ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39210, ~N[2026-06-17 10:52:28], ~N[2026-06-17 10:52:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:28.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305486, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:38Z", message: nil, status_log_id: 39210, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:28], updated_at: ~N[2026-06-17 10:52:28]}} [2026-06-17 10:52:28.671] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=19.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:28.673] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:28]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:34.263] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:34.263] [INFO ] Incoming JSON payload: {"oid":"7d9aa038-511a-4ddd-ad2b-3fa33d5d50d3","sn":"98251226730002","uploadTime":"2026-06-17T10:51:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"ram_free_mb","value":"828","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:34.264] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7d9aa038-511a-4ddd-ad2b-3fa33d5d50d3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:44Z", "value" => "828"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:44Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:44Z", "vendor" => "morefun"} [2026-06-17 10:52:34.265] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:34.265] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:34.265] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:34.266] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=70.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-06-17 10:52:34.268] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.2ms idle=22.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.`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-06-17 10:52:34.268] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:34.268] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:34.269] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:34.305] [DEBUG] QUERY OK source="tms_terminals" db=36.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:34.305] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:34.307] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.7ms idle=37.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:34.322] [DEBUG] QUERY OK source="tms_terminals" db=14.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:34.340] [DEBUG] QUERY OK db=18.2ms idle=15.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "7d9aa038-511a-4ddd-ad2b-3fa33d5d50d3", "2026-06-17T10:51:44Z", ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:34.341] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39211, oid: "7d9aa038-511a-4ddd-ad2b-3fa33d5d50d3", upload_time: "2026-06-17T10:51:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]} [2026-06-17 10:52:34.341] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:44Z", "value" => "morefun"} [2026-06-17 10:52:34.364] [DEBUG] QUERY OK db=22.4ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "morefun", "vendor", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305487, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.364] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:44Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:34.387] [DEBUG] QUERY OK db=21.8ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "kiosk_launcher", "model", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305488, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.388] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:44Z", "value" => "1.0"} [2026-06-17 10:52:34.409] [DEBUG] QUERY OK db=20.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "1.0", "app_version", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305489, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.409] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:44Z", "value" => "13"} [2026-06-17 10:52:34.428] [DEBUG] QUERY OK db=18.7ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "13", "android_version", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305490, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.428] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:44Z", "value" => "828"} [2026-06-17 10:52:34.451] [DEBUG] QUERY OK db=22.3ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "828", "ram_free_mb", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305491, itemkey: "ram_free_mb", value: "828", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.452] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:44Z", "value" => "WIFI"} [2026-06-17 10:52:34.475] [DEBUG] QUERY OK db=22.2ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "WIFI", "network_type", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305492, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.476] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:44Z", "value" => "true"} [2026-06-17 10:52:34.496] [DEBUG] QUERY OK db=20.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "true", "kiosk_active", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305493, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.496] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:44Z", "value" => ""} [2026-06-17 10:52:34.511] [DEBUG] QUERY OK db=14.4ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:44Z", "sim_operator", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305494, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.512] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"} [2026-06-17 10:52:34.525] [DEBUG] QUERY OK db=13.0ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "UNKNOWN", "sim_number", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305495, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.525] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"} [2026-06-17 10:52:34.544] [DEBUG] QUERY OK db=18.0ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "UNKNOWN", "sim_iccid", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305496, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.544] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"} [2026-06-17 10:52:34.574] [DEBUG] QUERY OK db=29.6ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "UNKNOWN", "sim_imsi", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305497, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.575] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"} [2026-06-17 10:52:34.597] [DEBUG] QUERY OK db=22.1ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "UNKNOWN", "sim_iccid2", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305498, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.597] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:44Z", "value" => "UNKNOWN"} [2026-06-17 10:52:34.616] [DEBUG] QUERY OK db=17.9ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "UNKNOWN", "sim_imsi2", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305499, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.616] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:44Z", "value" => "6"} [2026-06-17 10:52:34.631] [DEBUG] QUERY OK db=14.5ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "6", "data_usage_mb", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305500, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.631] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:44Z", "value" => "0"} [2026-06-17 10:52:34.649] [DEBUG] QUERY OK db=17.5ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:44Z", "0", "mobile_data_mb", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305501, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.651] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:34.681] [DEBUG] QUERY OK db=28.9ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39211, ~N[2026-06-17 10:52:34], ~N[2026-06-17 10:52:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:34.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305502, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:44Z", message: nil, status_log_id: 39211, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:34], updated_at: ~N[2026-06-17 10:52:34]}} [2026-06-17 10:52:34.682] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=32.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:34.683] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:34]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:40.349] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:40.349] [INFO ] Incoming JSON payload: {"oid":"ac18c342-fe88-459d-9127-e9cd111f045e","sn":"98251226730002","uploadTime":"2026-06-17T10:51:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"ram_free_mb","value":"828","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51:50Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:40.351] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ac18c342-fe88-459d-9127-e9cd111f045e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:50Z", "value" => "828"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:50Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:50Z", "vendor" => "morefun"} [2026-06-17 10:52:40.352] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:40.352] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:40.352] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:40.355] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=1097.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-06-17 10:52:40.358] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=1.8ms idle=97.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-06-17 10:52:40.358] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:40.360] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:40.360] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:40.387] [DEBUG] QUERY OK source="tms_terminals" db=25.7ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:40.387] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:40.390] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:40.420] [DEBUG] QUERY OK source="tms_terminals" db=29.6ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:40.436] [DEBUG] QUERY OK db=15.3ms idle=30.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ac18c342-fe88-459d-9127-e9cd111f045e", "2026-06-17T10:51:50Z", ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:40.436] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39212, oid: "ac18c342-fe88-459d-9127-e9cd111f045e", upload_time: "2026-06-17T10:51:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]} [2026-06-17 10:52:40.436] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:50Z", "value" => "morefun"} [2026-06-17 10:52:40.459] [DEBUG] QUERY OK db=21.0ms queue=1.1ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "morefun", "vendor", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305503, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.459] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:50Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:40.484] [DEBUG] QUERY OK db=23.7ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "kiosk_launcher", "model", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305504, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.485] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:50Z", "value" => "1.0"} [2026-06-17 10:52:40.516] [DEBUG] QUERY OK db=31.0ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "1.0", "app_version", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305505, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.516] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:50Z", "value" => "13"} [2026-06-17 10:52:40.532] [DEBUG] QUERY OK db=15.2ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "13", "android_version", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305506, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.533] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:50Z", "value" => "828"} [2026-06-17 10:52:40.555] [DEBUG] QUERY OK db=21.2ms queue=0.6ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "828", "ram_free_mb", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305507, itemkey: "ram_free_mb", value: "828", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.556] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:50Z", "value" => "WIFI"} [2026-06-17 10:52:40.589] [DEBUG] QUERY OK db=32.3ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "WIFI", "network_type", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305508, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.589] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:50Z", "value" => "true"} [2026-06-17 10:52:40.614] [DEBUG] QUERY OK db=24.6ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "true", "kiosk_active", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305509, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.615] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:50Z", "value" => ""} [2026-06-17 10:52:40.629] [DEBUG] QUERY OK db=13.3ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:50Z", "sim_operator", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305510, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.629] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"} [2026-06-17 10:52:40.643] [DEBUG] QUERY OK db=13.7ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "UNKNOWN", "sim_number", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305511, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.644] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"} [2026-06-17 10:52:40.667] [DEBUG] QUERY OK db=22.5ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "UNKNOWN", "sim_iccid", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305512, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.667] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"} [2026-06-17 10:52:40.690] [DEBUG] QUERY OK db=22.3ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "UNKNOWN", "sim_imsi", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305513, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.690] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"} [2026-06-17 10:52:40.708] [DEBUG] QUERY OK db=17.5ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "UNKNOWN", "sim_iccid2", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305514, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.709] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:50Z", "value" => "UNKNOWN"} [2026-06-17 10:52:40.724] [DEBUG] QUERY OK db=14.6ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "UNKNOWN", "sim_imsi2", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305515, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.724] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:50Z", "value" => "6"} [2026-06-17 10:52:40.739] [DEBUG] QUERY OK db=14.3ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "6", "data_usage_mb", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305516, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.740] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:50Z", "value" => "0"} [2026-06-17 10:52:40.763] [DEBUG] QUERY OK db=22.7ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "0", "mobile_data_mb", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305517, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.766] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:40.797] [DEBUG] QUERY OK db=28.5ms queue=1.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39212, ~N[2026-06-17 10:52:40], ~N[2026-06-17 10:52:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:40.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305518, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:50Z", message: nil, status_log_id: 39212, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:40], updated_at: ~N[2026-06-17 10:52:40]}} [2026-06-17 10:52:40.799] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=34.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:40.800] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:40]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:46.715] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:46.715] [INFO ] Incoming JSON payload: {"oid":"7815ca3e-3f1c-4501-8e64-9b49abe1a8e5","sn":"98251226730002","uploadTime":"2026-06-17T10:51:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"ram_free_mb","value":"830","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:51:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:51:56Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:46.717] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7815ca3e-3f1c-4501-8e64-9b49abe1a8e5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:56Z", "value" => "830"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:56Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:51:56Z", "vendor" => "morefun"} [2026-06-17 10:52:46.717] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:46.717] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:46.717] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:46.719] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1446.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-06-17 10:52:46.720] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=446.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-06-17 10:52:46.720] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:46.722] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:46.722] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:46.753] [DEBUG] QUERY OK source="tms_terminals" db=31.3ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:46.754] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:46.755] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=32.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:46.777] [DEBUG] QUERY OK source="tms_terminals" db=22.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:46.788] [DEBUG] QUERY OK db=10.7ms idle=22.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "7815ca3e-3f1c-4501-8e64-9b49abe1a8e5", "2026-06-17T10:51:56Z", ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:46.789] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39213, oid: "7815ca3e-3f1c-4501-8e64-9b49abe1a8e5", upload_time: "2026-06-17T10:51:56Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]} [2026-06-17 10:52:46.789] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:51:56Z", "value" => "morefun"} [2026-06-17 10:52:46.799] [DEBUG] QUERY OK db=10.5ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "morefun", "vendor", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305519, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.800] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:51:56Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:46.814] [DEBUG] QUERY OK db=13.6ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "kiosk_launcher", "model", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305520, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.814] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:51:56Z", "value" => "1.0"} [2026-06-17 10:52:46.847] [DEBUG] QUERY OK db=32.2ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "1.0", "app_version", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305521, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.847] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:51:56Z", "value" => "13"} [2026-06-17 10:52:46.872] [DEBUG] QUERY OK db=24.4ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "13", "android_version", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305522, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.873] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:51:56Z", "value" => "830"} [2026-06-17 10:52:46.883] [DEBUG] QUERY OK db=10.5ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "830", "ram_free_mb", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305523, itemkey: "ram_free_mb", value: "830", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.884] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:51:56Z", "value" => "WIFI"} [2026-06-17 10:52:46.897] [DEBUG] QUERY OK db=11.9ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "WIFI", "network_type", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305524, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.899] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:51:56Z", "value" => "true"} [2026-06-17 10:52:46.922] [DEBUG] QUERY OK db=22.5ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "true", "kiosk_active", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305525, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.923] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:51:56Z", "value" => ""} [2026-06-17 10:52:46.956] [DEBUG] QUERY OK db=33.3ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:51:56Z", "sim_operator", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305526, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.957] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"} [2026-06-17 10:52:46.977] [DEBUG] QUERY OK db=20.2ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "UNKNOWN", "sim_number", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305527, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.977] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"} [2026-06-17 10:52:46.994] [DEBUG] QUERY OK db=15.9ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "UNKNOWN", "sim_iccid", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:46.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305528, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:46.995] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"} [2026-06-17 10:52:47.018] [DEBUG] QUERY OK db=23.0ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "UNKNOWN", "sim_imsi", 39213, ~N[2026-06-17 10:52:46], ~N[2026-06-17 10:52:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:47.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305529, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:46], updated_at: ~N[2026-06-17 10:52:46]}} [2026-06-17 10:52:47.020] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"} [2026-06-17 10:52:47.052] [DEBUG] QUERY OK db=30.5ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "UNKNOWN", "sim_iccid2", 39213, ~N[2026-06-17 10:52:47], ~N[2026-06-17 10:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:47.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305530, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:47], updated_at: ~N[2026-06-17 10:52:47]}} [2026-06-17 10:52:47.053] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:51:56Z", "value" => "UNKNOWN"} [2026-06-17 10:52:47.074] [DEBUG] QUERY OK db=20.1ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "UNKNOWN", "sim_imsi2", 39213, ~N[2026-06-17 10:52:47], ~N[2026-06-17 10:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:47.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305531, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:47], updated_at: ~N[2026-06-17 10:52:47]}} [2026-06-17 10:52:47.075] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:51:56Z", "value" => "6"} [2026-06-17 10:52:47.093] [DEBUG] QUERY OK db=17.9ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "6", "data_usage_mb", 39213, ~N[2026-06-17 10:52:47], ~N[2026-06-17 10:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:47.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305532, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:47], updated_at: ~N[2026-06-17 10:52:47]}} [2026-06-17 10:52:47.094] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:51:56Z", "value" => "0"} [2026-06-17 10:52:47.117] [DEBUG] QUERY OK db=22.8ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "0", "mobile_data_mb", 39213, ~N[2026-06-17 10:52:47], ~N[2026-06-17 10:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:47.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305533, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:47], updated_at: ~N[2026-06-17 10:52:47]}} [2026-06-17 10:52:47.119] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:51:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:47.153] [DEBUG] QUERY OK db=32.7ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:51:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39213, ~N[2026-06-17 10:52:47], ~N[2026-06-17 10:52:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:47.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305534, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:51:56Z", message: nil, status_log_id: 39213, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:47], updated_at: ~N[2026-06-17 10:52:47]}} [2026-06-17 10:52:47.155] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=37.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:47.156] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:46]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:53.087] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:53.087] [INFO ] Incoming JSON payload: {"oid":"e3db2e02-844a-4508-8122-7104c4f3f1d2","sn":"98251226730002","uploadTime":"2026-06-17T10:52:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"ram_free_mb","value":"785","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52:02Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:53.089] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e3db2e02-844a-4508-8122-7104c4f3f1d2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:02Z", "value" => "785"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:02Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:02Z", "vendor" => "morefun"} [2026-06-17 10:52:53.089] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:53.089] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:53.090] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:53.090] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1803.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-06-17 10:52:53.093] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.0ms idle=802.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.`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-06-17 10:52:53.093] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:53.095] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:53.095] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:53.135] [DEBUG] QUERY OK source="tms_terminals" db=39.7ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:52:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:53.136] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:53.138] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=41.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:53.158] [DEBUG] QUERY OK source="tms_terminals" db=20.5ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:53.172] [DEBUG] QUERY OK db=12.8ms idle=21.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e3db2e02-844a-4508-8122-7104c4f3f1d2", "2026-06-17T10:52:02Z", ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:53.172] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39214, oid: "e3db2e02-844a-4508-8122-7104c4f3f1d2", upload_time: "2026-06-17T10:52:02Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]} [2026-06-17 10:52:53.172] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:02Z", "value" => "morefun"} [2026-06-17 10:52:53.196] [DEBUG] QUERY OK db=23.0ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "morefun", "vendor", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305535, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.198] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:02Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:53.229] [DEBUG] QUERY OK db=29.7ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "kiosk_launcher", "model", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305536, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.229] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:02Z", "value" => "1.0"} [2026-06-17 10:52:53.249] [DEBUG] QUERY OK db=19.1ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "1.0", "app_version", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305537, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.249] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:02Z", "value" => "13"} [2026-06-17 10:52:53.260] [DEBUG] QUERY OK db=10.6ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "13", "android_version", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305538, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.260] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:02Z", "value" => "785"} [2026-06-17 10:52:53.280] [DEBUG] QUERY OK db=19.5ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "785", "ram_free_mb", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305539, itemkey: "ram_free_mb", value: "785", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.281] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:02Z", "value" => "WIFI"} [2026-06-17 10:52:53.315] [DEBUG] QUERY OK db=32.9ms queue=0.1ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "WIFI", "network_type", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305540, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.315] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:02Z", "value" => "true"} [2026-06-17 10:52:53.336] [DEBUG] QUERY OK db=19.9ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "true", "kiosk_active", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305541, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.336] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:02Z", "value" => ""} [2026-06-17 10:52:53.347] [DEBUG] QUERY OK db=10.3ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:02Z", "sim_operator", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305542, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.347] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"} [2026-06-17 10:52:53.361] [DEBUG] QUERY OK db=13.0ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "UNKNOWN", "sim_number", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305543, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.361] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"} [2026-06-17 10:52:53.379] [DEBUG] QUERY OK db=16.4ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "UNKNOWN", "sim_iccid", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305544, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.379] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"} [2026-06-17 10:52:53.403] [DEBUG] QUERY OK db=23.6ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "UNKNOWN", "sim_imsi", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305545, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.404] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"} [2026-06-17 10:52:53.436] [DEBUG] QUERY OK db=31.5ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "UNKNOWN", "sim_iccid2", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305546, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.436] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:02Z", "value" => "UNKNOWN"} [2026-06-17 10:52:53.448] [DEBUG] QUERY OK db=11.3ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "UNKNOWN", "sim_imsi2", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305547, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.449] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:02Z", "value" => "6"} [2026-06-17 10:52:53.465] [DEBUG] QUERY OK db=15.6ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "6", "data_usage_mb", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305548, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.465] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:02Z", "value" => "0"} [2026-06-17 10:52:53.499] [DEBUG] QUERY OK db=32.5ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "0", "mobile_data_mb", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305549, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.500] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:53.525] [DEBUG] QUERY OK db=24.4ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39214, ~N[2026-06-17 10:52:53], ~N[2026-06-17 10:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:53.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305550, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:02Z", message: nil, status_log_id: 39214, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:53], updated_at: ~N[2026-06-17 10:52:53]}} [2026-06-17 10:52:53.528] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=28.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:53.529] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:53]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:56.496] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:56.496] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:52:06Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:52:06Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:52:06Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:52:06Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:52:06Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:52:06Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:52:06Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:52:06Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:52:06Z","vendor":"MoreFun"} [2026-06-17 10:52:56.497] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:52:06Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:52:06Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:52:06Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:52:06Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:52:06Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:52:06Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:52:06Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:52:06Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:06Z", "vendor" => "MoreFun"} [2026-06-17 10:52:56.497] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 10:52:56.497] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:56.497] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:52:56.498] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=1199.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:52:56.499] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=196.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:52:56.501] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.7ms 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-06-17 10:52:56.504] [DEBUG] QUERY OK source="parameter_definitions" db=1.5ms queue=0.8ms idle=2.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-06-17 10:52:56.505] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.1ms idle=3.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:52:56.545] [DEBUG] QUERY OK source="pos_merchant" db=39.0ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:52:56.546] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=348.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 ["372916040000000"] [2026-06-17 10:52:56.546] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:52:56.547] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:52:56.548] [DEBUG] QUERY OK source="address" db=0.2ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:52:56.548] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:52:56.549] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:52:56.564] [DEBUG] QUERY OK db=13.8ms idle=2.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", "d738bff9d68751c26e87c8e995ea1a2fbcadede55a269c5ac814a45fadee5d1c", 1859, 940, ~U[2026-06-17 10:52:56Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:52:56.564] [INFO ] AutoPushService: Created push log 29743 for MF919 params.zip [2026-06-17 10:52:56.565] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1859, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:52:56.565] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:52:56.565] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:52:56.568] [DEBUG] QUERY OK source="config_file_versions" db=2.5ms idle=17.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-06-17 10:52:56.571] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:52:56.588] [DEBUG] QUERY OK db=15.5ms 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", "2e132a4f1bddbf30e0ecfafdc4e30bf0b39b4b25894b03664de1b5f113fdb4ba", 1218, 17947, ~U[2026-06-17 10:52:56Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:52:56.588] [INFO ] AutoPushService: Created push log 29744 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:52:56.588] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1218, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:52:56.588] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:52:56.589] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:52:56.590] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.1ms idle=21.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-06-17 10:52:56.590] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:52:56.591] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:52:56.591] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:52:56.593] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:52:56.593] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:52:56.593] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:52:56.594] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 10:52:56.595] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:52:56.596] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:52:56.597] [DEBUG] QUERY OK source="tms_terminals" db=1.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.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:56.669] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms queue=42.7ms idle=2.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:52:56], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:52:56.669] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:56.669] [INFO ] Event published: terminal_updated [2026-06-17 10:52:56.669] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:52:56.670] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:52:56.670] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:52:56.670] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms idle=72.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-06-17 10:52:56], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:52:56.671] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:52:56.672] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=0.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_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-06-17 10:52:56.672] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:52:56.725] [DEBUG] QUERY OK source="tms_terminals" db=13.8ms queue=40.9ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", ~N[2026-06-17 10:52:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:56.726] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:56.727] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=54.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:56.785] [DEBUG] QUERY OK source="tms_terminals" db=14.2ms queue=43.7ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:56.809] [DEBUG] QUERY OK db=23.2ms idle=58.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:52:06Z", ~N[2026-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:56.809] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39215, oid: "organization_id", upload_time: "2026-06-17T10:52:06Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:56], updated_at: ~N[2026-06-17 10:52:56]} [2026-06-17 10:52:56.809] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:52:06Z", "value" => "online"} [2026-06-17 10:52:56.848] [DEBUG] QUERY OK db=37.2ms queue=0.1ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:52:06Z", "online", "status", 39215, ~N[2026-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:56.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305551, itemkey: "status", value: "online", timestamp: "2026-06-17T10:52:06Z", message: "Terminal status update", status_log_id: 39215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:56], updated_at: ~N[2026-06-17 10:52:56]}} [2026-06-17 10:52:56.848] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:52:56.849] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:52:56.849] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:52:06Z", "value" => "42"} [2026-06-17 10:52:56.861] [DEBUG] QUERY OK db=11.3ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:52:06Z", "42", "battery", 39215, ~N[2026-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:56.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305552, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:52:06Z", message: "Battery level", status_log_id: 39215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:56], updated_at: ~N[2026-06-17 10:52:56]}} [2026-06-17 10:52:56.861] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:52:06Z", "value" => "online"} [2026-06-17 10:52:56.873] [DEBUG] QUERY OK db=11.0ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:52:06Z", "online", "network", 39215, ~N[2026-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:56.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305553, itemkey: "network", value: "online", timestamp: "2026-06-17T10:52:06Z", message: "Network connectivity", status_log_id: 39215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:56], updated_at: ~N[2026-06-17 10:52:56]}} [2026-06-17 10:52:56.874] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:52:56.875] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:52:56.875] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:52:06Z", "value" => "0"} [2026-06-17 10:52:56.900] [DEBUG] QUERY OK db=24.4ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:52:06Z", "0", "cpu", 39215, ~N[2026-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:56.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305554, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:52:06Z", message: "CPU usage percentage", status_log_id: 39215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:56], updated_at: ~N[2026-06-17 10:52:56]}} [2026-06-17 10:52:56.901] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:52:06Z", "value" => ""} [2026-06-17 10:52:56.967] [DEBUG] QUERY OK db=24.2ms queue=40.8ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:52:06Z", "parameter_config", 39215, ~N[2026-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:56.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305555, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T10:52:06Z", message: "Current parameters version", status_log_id: 39215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:56], updated_at: ~N[2026-06-17 10:52:56]}} [2026-06-17 10:52:56.968] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:52:06Z", "value" => ""} [2026-06-17 10:52:57.022] [DEBUG] QUERY OK db=11.1ms queue=42.5ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:52:06Z", "emv_config", 39215, ~N[2026-06-17 10:52:56], ~N[2026-06-17 10:52:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:57.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305556, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T10:52:06Z", message: "Current EMV config version", status_log_id: 39215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:56], updated_at: ~N[2026-06-17 10:52:56]}} [2026-06-17 10:52:57.022] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:52:06Z", "value" => ""} [2026-06-17 10:52:57.047] [DEBUG] QUERY OK db=24.2ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:52:06Z", "keys_config", 39215, ~N[2026-06-17 10:52:57], ~N[2026-06-17 10:52:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:57.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305557, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:52:06Z", message: "Current keys config version", status_log_id: 39215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:57], updated_at: ~N[2026-06-17 10:52:57]}} [2026-06-17 10:52:57.048] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:52:06Z", "value" => ""} [2026-06-17 10:52:57.087] [DEBUG] QUERY OK db=38.6ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:52:06Z", "application", 39215, ~N[2026-06-17 10:52:57], ~N[2026-06-17 10:52:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:57.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305558, itemkey: "application", value: nil, timestamp: "2026-06-17T10:52:06Z", message: "Current application version", status_log_id: 39215, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:57], updated_at: ~N[2026-06-17 10:52:57]}} [2026-06-17 10:52:57.088] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:52:07Z"} [2026-06-17 10:52:57.089] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=41.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:57.088] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:52:07Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 35, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:52:57.089] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:56]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:52:59.136] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:52:59.137] [INFO ] Incoming JSON payload: {"oid":"0a0b1452-a445-45be-8ccc-b21bc57a3c44","sn":"98251226730002","uploadTime":"2026-06-17T10:52:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"ram_free_mb","value":"749","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52:09Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:52:59.138] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0a0b1452-a445-45be-8ccc-b21bc57a3c44", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:09Z", "value" => "749"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:09Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:09Z", "vendor" => "morefun"} [2026-06-17 10:52:59.138] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:52:59.139] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:52:59.139] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:52:59.141] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=944.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:52:59.142] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=826.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.`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-06-17 10:52:59.142] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:52:59.143] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:52:59.159] [DEBUG] QUERY OK source="tms_terminals" db=15.2ms idle=1.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:52:59], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:52:59.159] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:52:59.159] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:52:59.159] [INFO ] Event published: terminal_updated [2026-06-17 10:52:59.159] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:52:59.160] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:52:59.160] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms queue=0.1ms idle=16.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-06-17 10:52:59], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:52:59.162] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:52:59.163] [DEBUG] QUERY OK source="terminal_group_rules" db=1.0ms 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-06-17 10:52:59.163] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:52:59.216] [DEBUG] QUERY OK source="tms_terminals" db=14.6ms queue=40.6ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", ~N[2026-06-17 10:52:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:52:59.216] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:52:59.218] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=54.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:52:59.282] [DEBUG] QUERY OK source="tms_terminals" db=22.7ms queue=41.0ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:52:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:52:59.302] [DEBUG] QUERY OK db=19.6ms queue=0.1ms idle=64.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0a0b1452-a445-45be-8ccc-b21bc57a3c44", "2026-06-17T10:52:09Z", ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:52:59.303] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39216, oid: "0a0b1452-a445-45be-8ccc-b21bc57a3c44", upload_time: "2026-06-17T10:52:09Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]} [2026-06-17 10:52:59.303] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:09Z", "value" => "morefun"} [2026-06-17 10:52:59.356] [DEBUG] QUERY OK db=11.0ms queue=42.0ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "morefun", "vendor", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305559, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.357] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:09Z", "value" => "kiosk_launcher"} [2026-06-17 10:52:59.421] [DEBUG] QUERY OK db=22.7ms queue=41.2ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "kiosk_launcher", "model", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305560, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.422] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:09Z", "value" => "1.0"} [2026-06-17 10:52:59.445] [DEBUG] QUERY OK db=22.6ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "1.0", "app_version", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305561, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.445] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:09Z", "value" => "13"} [2026-06-17 10:52:59.469] [DEBUG] QUERY OK db=23.7ms queue=0.1ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "13", "android_version", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305562, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.470] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:09Z", "value" => "749"} [2026-06-17 10:52:59.485] [DEBUG] QUERY OK db=15.0ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "749", "ram_free_mb", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305563, itemkey: "ram_free_mb", value: "749", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.486] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:09Z", "value" => "WIFI"} [2026-06-17 10:52:59.503] [DEBUG] QUERY OK db=17.1ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "WIFI", "network_type", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305564, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.504] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:09Z", "value" => "true"} [2026-06-17 10:52:59.530] [DEBUG] QUERY OK db=26.0ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "true", "kiosk_active", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305565, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.531] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:09Z", "value" => ""} [2026-06-17 10:52:59.559] [DEBUG] QUERY OK db=28.0ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:09Z", "sim_operator", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305566, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.560] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"} [2026-06-17 10:52:59.573] [DEBUG] QUERY OK db=13.0ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "UNKNOWN", "sim_number", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305567, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.573] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"} [2026-06-17 10:52:59.588] [DEBUG] QUERY OK db=13.7ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "UNKNOWN", "sim_iccid", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305568, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.588] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"} [2026-06-17 10:52:59.608] [DEBUG] QUERY OK db=20.1ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "UNKNOWN", "sim_imsi", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305569, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.609] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"} [2026-06-17 10:52:59.649] [DEBUG] QUERY OK db=38.9ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "UNKNOWN", "sim_iccid2", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305570, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.651] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:09Z", "value" => "UNKNOWN"} [2026-06-17 10:52:59.671] [DEBUG] QUERY OK db=20.0ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "UNKNOWN", "sim_imsi2", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305571, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.674] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:09Z", "value" => "6"} [2026-06-17 10:52:59.689] [DEBUG] QUERY OK db=15.1ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "6", "data_usage_mb", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305572, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.690] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:09Z", "value" => "0"} [2026-06-17 10:52:59.721] [DEBUG] QUERY OK db=31.0ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "0", "mobile_data_mb", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305573, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.722] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:52:59.754] [DEBUG] QUERY OK db=30.7ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39216, ~N[2026-06-17 10:52:59], ~N[2026-06-17 10:52:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:52:59.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305574, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:09Z", message: nil, status_log_id: 39216, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:52:59], updated_at: ~N[2026-06-17 10:52:59]}} [2026-06-17 10:52:59.758] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=36.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:52:59.759] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:52:59]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:05.202] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:05.203] [INFO ] Incoming JSON payload: {"oid":"db95f074-9f90-459c-b49d-53b9acc0364d","sn":"98251226730002","uploadTime":"2026-06-17T10:52:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"ram_free_mb","value":"763","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52:15Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:53:05.205] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "db95f074-9f90-459c-b49d-53b9acc0364d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:15Z", "value" => "763"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:15Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:15Z", "vendor" => "morefun"} [2026-06-17 10:53:05.205] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:05.205] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:05.205] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:53:05.207] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=849.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-06-17 10:53:05.208] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=507.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-06-17 10:53:05.208] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:53:05.209] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:05.209] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:05.264] [DEBUG] QUERY OK source="tms_terminals" db=13.0ms queue=40.7ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:53:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:05.264] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:05.265] [DEBUG] QUERY OK source="tms_terminals" db=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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:05.286] [DEBUG] QUERY OK source="tms_terminals" db=20.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:05.323] [DEBUG] QUERY OK db=36.7ms idle=21.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "db95f074-9f90-459c-b49d-53b9acc0364d", "2026-06-17T10:52:15Z", ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:05.323] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39217, oid: "db95f074-9f90-459c-b49d-53b9acc0364d", upload_time: "2026-06-17T10:52:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]} [2026-06-17 10:53:05.324] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:15Z", "value" => "morefun"} [2026-06-17 10:53:05.349] [DEBUG] QUERY OK db=24.5ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "morefun", "vendor", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305575, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.351] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:15Z", "value" => "kiosk_launcher"} [2026-06-17 10:53:05.366] [DEBUG] QUERY OK db=14.8ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "kiosk_launcher", "model", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305576, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.366] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:15Z", "value" => "1.0"} [2026-06-17 10:53:05.390] [DEBUG] QUERY OK db=22.7ms queue=0.4ms idle=3.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "1.0", "app_version", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305577, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.392] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:15Z", "value" => "13"} [2026-06-17 10:53:05.423] [DEBUG] QUERY OK db=28.2ms queue=1.8ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "13", "android_version", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305578, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.426] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:15Z", "value" => "763"} [2026-06-17 10:53:05.439] [DEBUG] QUERY OK db=11.3ms queue=0.1ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "763", "ram_free_mb", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305579, itemkey: "ram_free_mb", value: "763", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.440] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:15Z", "value" => "WIFI"} [2026-06-17 10:53:05.460] [DEBUG] QUERY OK db=17.7ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "WIFI", "network_type", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305580, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.461] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:15Z", "value" => "true"} [2026-06-17 10:53:05.493] [DEBUG] QUERY OK db=31.6ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "true", "kiosk_active", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305581, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.494] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:15Z", "value" => ""} [2026-06-17 10:53:05.522] [DEBUG] QUERY OK db=28.1ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:15Z", "sim_operator", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305582, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.523] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"} [2026-06-17 10:53:05.549] [DEBUG] QUERY OK db=15.6ms queue=2.0ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "UNKNOWN", "sim_number", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305583, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.550] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"} [2026-06-17 10:53:05.579] [DEBUG] QUERY OK db=23.0ms queue=2.1ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "UNKNOWN", "sim_iccid", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305584, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.580] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"} [2026-06-17 10:53:05.612] [DEBUG] QUERY OK db=30.9ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "UNKNOWN", "sim_imsi", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305585, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.617] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"} [2026-06-17 10:53:05.636] [DEBUG] QUERY OK db=17.8ms queue=0.1ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "UNKNOWN", "sim_iccid2", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305586, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.638] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:15Z", "value" => "UNKNOWN"} [2026-06-17 10:53:05.655] [DEBUG] QUERY OK db=16.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "UNKNOWN", "sim_imsi2", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305587, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.655] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:15Z", "value" => "6"} [2026-06-17 10:53:05.678] [DEBUG] QUERY OK db=22.3ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "6", "data_usage_mb", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305588, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.678] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:15Z", "value" => "0"} [2026-06-17 10:53:05.704] [DEBUG] QUERY OK db=25.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "0", "mobile_data_mb", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305589, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.705] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:53:05.734] [DEBUG] QUERY OK db=28.0ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39217, ~N[2026-06-17 10:53:05], ~N[2026-06-17 10:53:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:05.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305590, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:15Z", message: nil, status_log_id: 39217, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:05], updated_at: ~N[2026-06-17 10:53:05]}} [2026-06-17 10:53:05.739] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms idle=31.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:05.740] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:05]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:11.265] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:11.265] [INFO ] Incoming JSON payload: {"oid":"f6c27cba-36fb-4163-879d-f7474a5497e5","sn":"98251226730002","uploadTime":"2026-06-17T10:52:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"ram_free_mb","value":"761","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52:21Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:53:11.266] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f6c27cba-36fb-4163-879d-f7474a5497e5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:21Z", "value" => "761"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:21Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:21Z", "vendor" => "morefun"} [2026-06-17 10:53:11.266] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:11.266] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:11.267] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:53:11.271] [DEBUG] QUERY OK source="parameter_templates" db=4.2ms idle=879.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:53:11.272] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms 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-06-17 10:53:11.272] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:53:11.274] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:11.275] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:11.297] [DEBUG] QUERY OK source="tms_terminals" db=21.8ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:53:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:11.297] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:11.299] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:11.316] [DEBUG] QUERY OK source="tms_terminals" db=17.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:11.334] [DEBUG] QUERY OK db=17.7ms idle=17.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f6c27cba-36fb-4163-879d-f7474a5497e5", "2026-06-17T10:52:21Z", ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:11.334] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39218, oid: "f6c27cba-36fb-4163-879d-f7474a5497e5", upload_time: "2026-06-17T10:52:21Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]} [2026-06-17 10:53:11.335] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:21Z", "value" => "morefun"} [2026-06-17 10:53:11.360] [DEBUG] QUERY OK db=25.2ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "morefun", "vendor", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305591, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.361] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:21Z", "value" => "kiosk_launcher"} [2026-06-17 10:53:11.392] [DEBUG] QUERY OK db=30.7ms queue=0.4ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "kiosk_launcher", "model", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305592, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.392] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:21Z", "value" => "1.0"} [2026-06-17 10:53:11.406] [DEBUG] QUERY OK db=13.7ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "1.0", "app_version", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305593, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.407] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:21Z", "value" => "13"} [2026-06-17 10:53:11.428] [DEBUG] QUERY OK db=20.7ms idle=11.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "13", "android_version", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305594, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.429] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:21Z", "value" => "761"} [2026-06-17 10:53:11.453] [DEBUG] QUERY OK db=23.9ms queue=0.1ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "761", "ram_free_mb", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305595, itemkey: "ram_free_mb", value: "761", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.455] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:21Z", "value" => "WIFI"} [2026-06-17 10:53:11.485] [DEBUG] QUERY OK db=25.1ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "WIFI", "network_type", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305596, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.486] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:21Z", "value" => "true"} [2026-06-17 10:53:11.500] [DEBUG] QUERY OK db=14.4ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "true", "kiosk_active", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305597, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.503] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:21Z", "value" => ""} [2026-06-17 10:53:11.524] [DEBUG] QUERY OK db=21.1ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:21Z", "sim_operator", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305598, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.524] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"} [2026-06-17 10:53:11.569] [DEBUG] QUERY OK db=43.9ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "UNKNOWN", "sim_number", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305599, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.569] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"} [2026-06-17 10:53:11.641] [DEBUG] QUERY OK db=71.5ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "UNKNOWN", "sim_iccid", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305600, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.642] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"} [2026-06-17 10:53:11.666] [DEBUG] QUERY OK db=24.0ms idle=73.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "UNKNOWN", "sim_imsi", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305601, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.666] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"} [2026-06-17 10:53:11.692] [DEBUG] QUERY OK db=25.6ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "UNKNOWN", "sim_iccid2", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305602, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.693] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:21Z", "value" => "UNKNOWN"} [2026-06-17 10:53:11.710] [DEBUG] QUERY OK db=16.8ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "UNKNOWN", "sim_imsi2", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305603, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.710] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:21Z", "value" => "6"} [2026-06-17 10:53:11.726] [DEBUG] QUERY OK db=15.2ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "6", "data_usage_mb", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305604, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.726] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:21Z", "value" => "0"} [2026-06-17 10:53:11.741] [DEBUG] QUERY OK db=14.0ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "0", "mobile_data_mb", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305605, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.743] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:53:11.777] [DEBUG] QUERY OK db=31.5ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39218, ~N[2026-06-17 10:53:11], ~N[2026-06-17 10:53:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:11.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305606, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:21Z", message: nil, status_log_id: 39218, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:11], updated_at: ~N[2026-06-17 10:53:11]}} [2026-06-17 10:53:11.782] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=1.2ms idle=37.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:11.785] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:11]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:16.980] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:52:07Z"} [2026-06-17 10:53:16.980] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:52:07Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 36, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:53:17.019] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:17.019] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:52:27Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:52:27Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:52:27Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:52:27Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:52:27Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:52:27Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:52:27Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:52:27Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:52:27Z","vendor":"MoreFun"} [2026-06-17 10:53:17.020] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:52:27Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:52:27Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:52:27Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:52:27Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:52:27Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:52:27Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:52:27Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:52:27Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:27Z", "vendor" => "MoreFun"} [2026-06-17 10:53:17.020] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 10:53:17.020] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:17.020] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:53:17.021] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1607.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:53:17.023] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=608.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:53:17.024] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=2.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-06-17 10:53:17.029] [DEBUG] QUERY OK source="parameter_definitions" db=2.4ms queue=2.1ms idle=1.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-06-17 10:53:17.036] [DEBUG] QUERY OK source="pos_terminal" db=3.8ms idle=8.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:53:17.069] [DEBUG] QUERY OK source="pos_merchant" db=33.1ms idle=7.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:53:17.071] [DEBUG] QUERY OK db=0.5ms queue=0.7ms idle=866.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 ["372916040000000"] [2026-06-17 10:53:17.071] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:53:17.072] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms queue=0.1ms idle=35.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:53:17.074] [DEBUG] QUERY OK source="address" db=0.3ms queue=0.2ms idle=3.6ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:53:17.074] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:53:17.075] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:53:17.109] [DEBUG] QUERY OK db=33.5ms idle=3.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", "bce90ec7a6a610b1e5883ceb1bd7b64727fb7070be8fd4161a4ce1503f1ef8a3", 1474, 940, ~U[2026-06-17 10:53:17Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:53:17.110] [INFO ] AutoPushService: Created push log 29745 for MF919 params.zip [2026-06-17 10:53:17.110] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1474, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:53:17.110] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:53:17.110] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:53:17.111] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=36.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-06-17 10:53:17.116] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:53:17.148] [DEBUG] QUERY OK db=31.3ms idle=7.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", "da6256b5003eb6f13f55e6c7055c544a3214d9b2877a2835a1ce78acec7a12ba", 3205, 17947, ~U[2026-06-17 10:53:17Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:53:17.148] [INFO ] AutoPushService: Created push log 29746 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:53:17.148] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3205, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:53:17.149] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:53:17.149] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:53:17.150] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=37.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-06-17 10:53:17.150] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:53:17.151] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:53:17.151] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:53:17.152] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:53:17.152] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:53:17.152] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:53:17.154] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 10:53:17.154] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:53:17.155] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:53:17.155] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:17.214] [DEBUG] QUERY OK source="tms_terminals" db=16.4ms queue=41.9ms idle=1.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:53:17], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:53:17.214] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:17.214] [INFO ] Event published: terminal_updated [2026-06-17 10:53:17.215] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:53:17.215] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:53:17.215] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:53:17.216] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms idle=59.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-06-17 10:53:17], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:53:17.217] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:53:17.217] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=1.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-06-17 10:53:17.217] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:53:17.272] [DEBUG] QUERY OK source="tms_terminals" db=11.1ms queue=41.5ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", ~N[2026-06-17 10:53:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:17.272] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:17.273] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:17.339] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms queue=40.6ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:17.362] [DEBUG] QUERY OK db=22.4ms queue=0.1ms idle=66.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:52:27Z", ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:17.362] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39219, oid: "organization_id", upload_time: "2026-06-17T10:52:27Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]} [2026-06-17 10:53:17.362] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:52:27Z", "value" => "online"} [2026-06-17 10:53:17.382] [DEBUG] QUERY OK db=19.6ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:52:27Z", "online", "status", 39219, ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:17.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305607, itemkey: "status", value: "online", timestamp: "2026-06-17T10:52:27Z", message: "Terminal status update", status_log_id: 39219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]}} [2026-06-17 10:53:17.383] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:53:17.384] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:52:27Z", "value" => "42"} [2026-06-17 10:53:17.384] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:53:17.400] [DEBUG] QUERY OK db=15.7ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:52:27Z", "42", "battery", 39219, ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:17.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305608, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:52:27Z", message: "Battery level", status_log_id: 39219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]}} [2026-06-17 10:53:17.400] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:52:27Z", "value" => "online"} [2026-06-17 10:53:17.418] [DEBUG] QUERY OK db=16.2ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:52:27Z", "online", "network", 39219, ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:17.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305609, itemkey: "network", value: "online", timestamp: "2026-06-17T10:52:27Z", message: "Network connectivity", status_log_id: 39219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]}} [2026-06-17 10:53:17.418] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:53:17.419] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:52:27Z", "value" => "0"} [2026-06-17 10:53:17.420] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:53:17.452] [DEBUG] QUERY OK db=33.0ms 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-06-17T10:52:27Z", "0", "cpu", 39219, ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:17.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305610, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:52:27Z", message: "CPU usage percentage", status_log_id: 39219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]}} [2026-06-17 10:53:17.452] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:52:27Z", "value" => ""} [2026-06-17 10:53:17.513] [DEBUG] QUERY OK db=18.3ms queue=41.7ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:52:27Z", "parameter_config", 39219, ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:17.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305611, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T10:52:27Z", message: "Current parameters version", status_log_id: 39219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]}} [2026-06-17 10:53:17.513] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:52:27Z", "value" => ""} [2026-06-17 10:53:17.572] [DEBUG] QUERY OK db=16.5ms queue=42.2ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:52:27Z", "emv_config", 39219, ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:17.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305612, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T10:52:27Z", message: "Current EMV config version", status_log_id: 39219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]}} [2026-06-17 10:53:17.574] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:52:27Z", "value" => ""} [2026-06-17 10:53:17.599] [DEBUG] QUERY OK db=24.5ms queue=0.3ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:52:27Z", "keys_config", 39219, ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:17.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305613, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:52:27Z", message: "Current keys config version", status_log_id: 39219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]}} [2026-06-17 10:53:17.600] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:52:27Z", "value" => ""} [2026-06-17 10:53:17.632] [DEBUG] QUERY OK db=32.2ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:52:27Z", "application", 39219, ~N[2026-06-17 10:53:17], ~N[2026-06-17 10:53:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:17.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305614, itemkey: "application", value: nil, timestamp: "2026-06-17T10:52:27Z", message: "Current application version", status_log_id: 39219, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:17], updated_at: ~N[2026-06-17 10:53:17]}} [2026-06-17 10:53:17.633] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:52:27Z"} [2026-06-17 10:53:17.634] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=33.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:17.634] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:17]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:17.634] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:52:27Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 41, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[{{#PID<0.1502.0>, #Reference<0.2500251972.57933825.150233>}, -576460555187842}], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:53:22.057] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} 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_shamanth", online_devices: %{}}) (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_shamanth"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:53:22.057] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_shamanth"}} terminating ** (stop) :ping_timeout Last message: :ping State: %Tortoise.Connection{client_id: "phoenix_client_shamanth", 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_shamanth", 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/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.2500251972.57933825.111457>, opts: [client_id: "phoenix_client_shamanth", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_shamanth"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:53:22.093] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_shamanth"}} terminating ** (stop) :ping_timeout Last message: {:EXIT, #PID<0.1502.0>, :ping_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_shamanth"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.3318.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_shamanth", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_shamanth"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1518.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_shamanth"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1519.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_shamanth"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460551, -576460556, -576460556], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_shamanth", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_shamanth"]}]} [2026-06-17 10:53:22.107] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 10:53:23.692] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:23.692] [INFO ] Incoming JSON payload: {"oid":"94ec725e-39f1-499f-914e-06659b08e089","sn":"98251226730002","uploadTime":"2026-06-17T10:52:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"ram_free_mb","value":"760","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52:33Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:53:23.693] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "94ec725e-39f1-499f-914e-06659b08e089", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:33Z", "value" => "760"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:33Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:33Z", "vendor" => "morefun"} [2026-06-17 10:53:23.693] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:23.693] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:23.693] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:53:23.694] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1259.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-06-17 10:53:23.695] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=257.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.`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-06-17 10:53:23.695] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:53:23.695] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:23.774] [DEBUG] QUERY OK source="tms_terminals" db=37.8ms queue=40.6ms idle=1.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:53:23], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:53:23.775] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:23.775] [INFO ] Event published: terminal_updated [2026-06-17 10:53:23.775] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:53:23.775] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:53:23.776] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:53:23.776] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.2ms idle=79.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-06-17 10:53:23], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:53:23.778] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:53:23.779] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms 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-06-17 10:53:23.779] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:53:23.849] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms queue=40.8ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", ~N[2026-06-17 10:53:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:23.850] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:23.851] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.4ms idle=71.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:23.907] [DEBUG] QUERY OK source="tms_terminals" db=13.0ms queue=41.7ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:23.924] [DEBUG] QUERY OK db=16.8ms queue=0.2ms idle=56.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "94ec725e-39f1-499f-914e-06659b08e089", "2026-06-17T10:52:33Z", ~N[2026-06-17 10:53:23], ~N[2026-06-17 10:53:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:23.925] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39220, oid: "94ec725e-39f1-499f-914e-06659b08e089", upload_time: "2026-06-17T10:52:33Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:23], updated_at: ~N[2026-06-17 10:53:23]} [2026-06-17 10:53:23.925] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:33Z", "value" => "morefun"} [2026-06-17 10:53:23.996] [DEBUG] QUERY OK db=24.8ms queue=43.6ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "morefun", "vendor", 39220, ~N[2026-06-17 10:53:23], ~N[2026-06-17 10:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:23.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305615, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:23], updated_at: ~N[2026-06-17 10:53:23]}} [2026-06-17 10:53:23.997] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:33Z", "value" => "kiosk_launcher"} [2026-06-17 10:53:24.068] [DEBUG] QUERY OK db=29.3ms queue=40.8ms idle=73.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "kiosk_launcher", "model", 39220, ~N[2026-06-17 10:53:23], ~N[2026-06-17 10:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305616, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:23], updated_at: ~N[2026-06-17 10:53:23]}} [2026-06-17 10:53:24.068] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:33Z", "value" => "1.0"} [2026-06-17 10:53:24.161] [DEBUG] QUERY OK db=92.7ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "1.0", "app_version", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305617, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.162] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:33Z", "value" => "13"} [2026-06-17 10:53:24.186] [DEBUG] QUERY OK db=23.7ms idle=94.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "13", "android_version", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305618, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.186] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:33Z", "value" => "760"} [2026-06-17 10:53:24.206] [DEBUG] QUERY OK db=19.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "760", "ram_free_mb", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305619, itemkey: "ram_free_mb", value: "760", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.207] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:33Z", "value" => "WIFI"} [2026-06-17 10:53:24.220] [DEBUG] QUERY OK db=13.0ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "WIFI", "network_type", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305620, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.220] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:33Z", "value" => "true"} [2026-06-17 10:53:24.231] [DEBUG] QUERY OK db=10.5ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "true", "kiosk_active", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305621, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.232] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:33Z", "value" => ""} [2026-06-17 10:53:24.262] [DEBUG] QUERY OK db=29.8ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:33Z", "sim_operator", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305622, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.262] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"} [2026-06-17 10:53:24.296] [DEBUG] QUERY OK db=33.2ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "UNKNOWN", "sim_number", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305623, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.296] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"} [2026-06-17 10:53:24.312] [DEBUG] QUERY OK db=14.6ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "UNKNOWN", "sim_iccid", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305624, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.312] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"} [2026-06-17 10:53:24.326] [DEBUG] QUERY OK db=12.8ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "UNKNOWN", "sim_imsi", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305625, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.326] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"} [2026-06-17 10:53:24.357] [DEBUG] QUERY OK db=30.6ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "UNKNOWN", "sim_iccid2", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305626, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.358] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:33Z", "value" => "UNKNOWN"} [2026-06-17 10:53:24.381] [DEBUG] QUERY OK db=23.1ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "UNKNOWN", "sim_imsi2", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305627, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.381] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:33Z", "value" => "6"} [2026-06-17 10:53:24.399] [DEBUG] QUERY OK db=16.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "6", "data_usage_mb", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305628, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.401] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:33Z", "value" => "0"} [2026-06-17 10:53:24.413] [DEBUG] QUERY OK db=11.2ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "0", "mobile_data_mb", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305629, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.416] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:53:24.433] [DEBUG] QUERY OK db=15.7ms queue=0.4ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39220, ~N[2026-06-17 10:53:24], ~N[2026-06-17 10:53:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:24.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305630, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:33Z", message: nil, status_log_id: 39220, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:24], updated_at: ~N[2026-06-17 10:53:24]}} [2026-06-17 10:53:24.444] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.6ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:24.448] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:23]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:29.777] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:29.777] [INFO ] Incoming JSON payload: {"oid":"477294a0-3487-48c2-afcb-68e54befc368","sn":"98251226730002","uploadTime":"2026-06-17T10:52:39Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"ram_free_mb","value":"759","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:39Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52:39Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:53:29.779] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "477294a0-3487-48c2-afcb-68e54befc368", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:39Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:39Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:39Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:39Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:39Z", "value" => "759"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:39Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:39Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:39Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:39Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:39Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:39Z", "vendor" => "morefun"} [2026-06-17 10:53:29.780] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:29.780] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:29.780] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:53:29.785] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=1321.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:53:29.786] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=321.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-06-17 10:53:29.787] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:53:29.789] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:29.790] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:29.846] [DEBUG] QUERY OK source="tms_terminals" db=14.5ms queue=41.4ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:53:29], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:29.846] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:29.847] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=56.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:29.868] [DEBUG] QUERY OK source="tms_terminals" db=20.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:29], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:29.893] [DEBUG] QUERY OK db=24.2ms idle=21.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "477294a0-3487-48c2-afcb-68e54befc368", "2026-06-17T10:52:39Z", ~N[2026-06-17 10:53:29], ~N[2026-06-17 10:53:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:29.893] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39221, oid: "477294a0-3487-48c2-afcb-68e54befc368", upload_time: "2026-06-17T10:52:39Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:29], updated_at: ~N[2026-06-17 10:53:29]} [2026-06-17 10:53:29.893] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:39Z", "value" => "morefun"} [2026-06-17 10:53:29.919] [DEBUG] QUERY OK db=25.0ms queue=0.2ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "morefun", "vendor", 39221, ~N[2026-06-17 10:53:29], ~N[2026-06-17 10:53:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:29.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305631, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:29], updated_at: ~N[2026-06-17 10:53:29]}} [2026-06-17 10:53:29.919] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:39Z", "value" => "kiosk_launcher"} [2026-06-17 10:53:29.931] [DEBUG] QUERY OK db=10.9ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "kiosk_launcher", "model", 39221, ~N[2026-06-17 10:53:29], ~N[2026-06-17 10:53:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:29.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305632, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:29], updated_at: ~N[2026-06-17 10:53:29]}} [2026-06-17 10:53:29.931] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:39Z", "value" => "1.0"} [2026-06-17 10:53:29.944] [DEBUG] QUERY OK db=12.1ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "1.0", "app_version", 39221, ~N[2026-06-17 10:53:29], ~N[2026-06-17 10:53:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:29.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305633, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:29], updated_at: ~N[2026-06-17 10:53:29]}} [2026-06-17 10:53:29.944] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:39Z", "value" => "13"} [2026-06-17 10:53:29.974] [DEBUG] QUERY OK db=28.4ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "13", "android_version", 39221, ~N[2026-06-17 10:53:29], ~N[2026-06-17 10:53:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:29.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305634, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:29], updated_at: ~N[2026-06-17 10:53:29]}} [2026-06-17 10:53:29.974] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:39Z", "value" => "759"} [2026-06-17 10:53:30.006] [DEBUG] QUERY OK db=31.6ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "759", "ram_free_mb", 39221, ~N[2026-06-17 10:53:29], ~N[2026-06-17 10:53:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305635, itemkey: "ram_free_mb", value: "759", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:29], updated_at: ~N[2026-06-17 10:53:29]}} [2026-06-17 10:53:30.007] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:39Z", "value" => "WIFI"} [2026-06-17 10:53:30.019] [DEBUG] QUERY OK db=11.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "WIFI", "network_type", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305636, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.020] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:39Z", "value" => "true"} [2026-06-17 10:53:30.031] [DEBUG] QUERY OK db=10.6ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "true", "kiosk_active", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305637, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.031] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:39Z", "value" => ""} [2026-06-17 10:53:30.048] [DEBUG] QUERY OK db=16.6ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:39Z", "sim_operator", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305638, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.049] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"} [2026-06-17 10:53:30.086] [DEBUG] QUERY OK db=36.2ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "UNKNOWN", "sim_number", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305639, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.087] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"} [2026-06-17 10:53:30.152] [DEBUG] QUERY OK db=63.9ms queue=0.2ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "UNKNOWN", "sim_iccid", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305640, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.152] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"} [2026-06-17 10:53:30.173] [DEBUG] QUERY OK db=20.5ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "UNKNOWN", "sim_imsi", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305641, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.173] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"} [2026-06-17 10:53:30.185] [DEBUG] QUERY OK db=10.9ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "UNKNOWN", "sim_iccid2", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305642, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.185] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:39Z", "value" => "UNKNOWN"} [2026-06-17 10:53:30.199] [DEBUG] QUERY OK db=13.4ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "UNKNOWN", "sim_imsi2", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305643, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.201] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:39Z", "value" => "6"} [2026-06-17 10:53:30.233] [DEBUG] QUERY OK db=31.7ms queue=0.1ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "6", "data_usage_mb", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305644, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.234] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:39Z", "value" => "0"} [2026-06-17 10:53:30.259] [DEBUG] QUERY OK db=23.1ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "0", "mobile_data_mb", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305645, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.260] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:53:30.277] [DEBUG] QUERY OK db=16.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39221, ~N[2026-06-17 10:53:30], ~N[2026-06-17 10:53:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:30.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305646, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:39Z", message: nil, status_log_id: 39221, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:30], updated_at: ~N[2026-06-17 10:53:30]}} [2026-06-17 10:53:30.279] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=19.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:30.280] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:29]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:36.414] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:36.415] [INFO ] Incoming JSON payload: {"oid":"1eacb746-1ec9-4793-91e9-7abed200cb16","sn":"98251226730002","uploadTime":"2026-06-17T10:52:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"ram_free_mb","value":"759","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:53:36.416] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1eacb746-1ec9-4793-91e9-7abed200cb16", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:45Z", "value" => "759"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:45Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:45Z", "vendor" => "morefun"} [2026-06-17 10:53:36.416] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:36.416] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:36.416] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:53:36.420] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms idle=932.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-06-17 10:53:36.424] [DEBUG] QUERY OK source="parameter_templates" db=4.0ms idle=219.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-06-17 10:53:36.424] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:53:36.432] [DEBUG] QUERY OK source="tms_terminals" db=5.8ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:36.434] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:36.466] [DEBUG] QUERY OK source="tms_terminals" db=27.1ms queue=1.3ms idle=12.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:53:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:36.466] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:36.470] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=38.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:36.483] [DEBUG] QUERY OK source="tms_terminals" db=12.5ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:36.505] [DEBUG] QUERY OK db=21.7ms idle=13.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1eacb746-1ec9-4793-91e9-7abed200cb16", "2026-06-17T10:52:45Z", ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:36.506] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39222, oid: "1eacb746-1ec9-4793-91e9-7abed200cb16", upload_time: "2026-06-17T10:52:45Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]} [2026-06-17 10:53:36.506] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:45Z", "value" => "morefun"} [2026-06-17 10:53:36.530] [DEBUG] QUERY OK db=24.0ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "morefun", "vendor", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305647, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.530] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:45Z", "value" => "kiosk_launcher"} [2026-06-17 10:53:36.560] [DEBUG] QUERY OK db=28.7ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "kiosk_launcher", "model", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305648, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.560] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:45Z", "value" => "1.0"} [2026-06-17 10:53:36.575] [DEBUG] QUERY OK db=14.6ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "1.0", "app_version", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305649, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.575] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:45Z", "value" => "13"} [2026-06-17 10:53:36.591] [DEBUG] QUERY OK db=13.3ms queue=1.4ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "13", "android_version", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305650, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.591] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:45Z", "value" => "759"} [2026-06-17 10:53:36.623] [DEBUG] QUERY OK db=30.9ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "759", "ram_free_mb", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305651, itemkey: "ram_free_mb", value: "759", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.623] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:45Z", "value" => "WIFI"} [2026-06-17 10:53:36.737] [DEBUG] QUERY OK db=113.0ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "WIFI", "network_type", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305652, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.738] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:45Z", "value" => "true"} [2026-06-17 10:53:36.777] [DEBUG] QUERY OK db=39.2ms idle=115.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "true", "kiosk_active", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305653, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.778] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:45Z", "value" => ""} [2026-06-17 10:53:36.789] [DEBUG] QUERY OK db=10.5ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:45Z", "sim_operator", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305654, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.789] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"} [2026-06-17 10:53:36.803] [DEBUG] QUERY OK db=12.9ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "UNKNOWN", "sim_number", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305655, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.803] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"} [2026-06-17 10:53:36.823] [DEBUG] QUERY OK db=19.7ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "UNKNOWN", "sim_iccid", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305656, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.824] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"} [2026-06-17 10:53:36.866] [DEBUG] QUERY OK db=42.4ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "UNKNOWN", "sim_imsi", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305657, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.867] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"} [2026-06-17 10:53:36.878] [DEBUG] QUERY OK db=10.7ms queue=0.1ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "UNKNOWN", "sim_iccid2", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305658, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.878] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:45Z", "value" => "UNKNOWN"} [2026-06-17 10:53:36.891] [DEBUG] QUERY OK db=12.1ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "UNKNOWN", "sim_imsi2", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305659, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.891] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:45Z", "value" => "6"} [2026-06-17 10:53:36.916] [DEBUG] QUERY OK db=24.2ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "6", "data_usage_mb", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305660, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.916] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:45Z", "value" => "0"} [2026-06-17 10:53:36.950] [DEBUG] QUERY OK db=32.7ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:45Z", "0", "mobile_data_mb", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305661, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.950] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:53:36.971] [DEBUG] QUERY OK db=20.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39222, ~N[2026-06-17 10:53:36], ~N[2026-06-17 10:53:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:36.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305662, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:45Z", message: nil, status_log_id: 39222, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:36], updated_at: ~N[2026-06-17 10:53:36]}} [2026-06-17 10:53:36.974] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=23.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:36.975] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:36]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:42.115] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:42.115] [INFO ] Incoming JSON payload: {"oid":"8ad4fdf8-6be8-4c8b-ac04-4276525ed351","sn":"98251226730002","uploadTime":"2026-06-17T10:52:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"ram_free_mb","value":"759","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52:51Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:53:42.117] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8ad4fdf8-6be8-4c8b-ac04-4276525ed351", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:51Z", "value" => "759"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:51Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:51Z", "vendor" => "morefun"} [2026-06-17 10:53:42.117] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:42.117] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:42.117] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:53:42.119] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1619.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:53:42.120] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=617.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-06-17 10:53:42.120] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:53:42.121] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:42.121] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:42.150] [DEBUG] QUERY OK source="tms_terminals" db=27.9ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:53:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:42.150] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:42.151] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:42.175] [DEBUG] QUERY OK source="tms_terminals" db=22.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:42.189] [DEBUG] QUERY OK db=13.9ms queue=0.1ms idle=23.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8ad4fdf8-6be8-4c8b-ac04-4276525ed351", "2026-06-17T10:52:51Z", ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:42.189] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39223, oid: "8ad4fdf8-6be8-4c8b-ac04-4276525ed351", upload_time: "2026-06-17T10:52:51Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]} [2026-06-17 10:53:42.189] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:51Z", "value" => "morefun"} [2026-06-17 10:53:42.205] [DEBUG] QUERY OK db=14.8ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "morefun", "vendor", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305663, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.205] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:51Z", "value" => "kiosk_launcher"} [2026-06-17 10:53:42.223] [DEBUG] QUERY OK db=16.9ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "kiosk_launcher", "model", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305664, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.223] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:51Z", "value" => "1.0"} [2026-06-17 10:53:42.247] [DEBUG] QUERY OK db=22.7ms queue=0.3ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "1.0", "app_version", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305665, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.248] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:51Z", "value" => "13"} [2026-06-17 10:53:42.271] [DEBUG] QUERY OK db=22.6ms queue=0.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "13", "android_version", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305666, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.271] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:51Z", "value" => "759"} [2026-06-17 10:53:42.286] [DEBUG] QUERY OK db=14.7ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "759", "ram_free_mb", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305667, itemkey: "ram_free_mb", value: "759", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.287] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:51Z", "value" => "WIFI"} [2026-06-17 10:53:42.303] [DEBUG] QUERY OK db=14.7ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "WIFI", "network_type", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305668, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.303] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:51Z", "value" => "true"} [2026-06-17 10:53:42.326] [DEBUG] QUERY OK db=22.0ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "true", "kiosk_active", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305669, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.326] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:51Z", "value" => ""} [2026-06-17 10:53:42.349] [DEBUG] QUERY OK db=22.7ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:51Z", "sim_operator", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305670, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.350] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"} [2026-06-17 10:53:42.372] [DEBUG] QUERY OK db=22.0ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "UNKNOWN", "sim_number", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305671, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.372] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"} [2026-06-17 10:53:42.383] [DEBUG] QUERY OK db=10.7ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "UNKNOWN", "sim_iccid", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305672, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.384] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"} [2026-06-17 10:53:42.395] [DEBUG] QUERY OK db=10.7ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "UNKNOWN", "sim_imsi", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305673, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.396] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"} [2026-06-17 10:53:42.410] [DEBUG] QUERY OK db=13.6ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "UNKNOWN", "sim_iccid2", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305674, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.410] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:51Z", "value" => "UNKNOWN"} [2026-06-17 10:53:42.435] [DEBUG] QUERY OK db=24.7ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "UNKNOWN", "sim_imsi2", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305675, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.435] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:51Z", "value" => "6"} [2026-06-17 10:53:42.458] [DEBUG] QUERY OK db=22.1ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "6", "data_usage_mb", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305676, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.459] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:51Z", "value" => "0"} [2026-06-17 10:53:42.477] [DEBUG] QUERY OK db=17.5ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "0", "mobile_data_mb", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305677, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.479] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:53:42.492] [DEBUG] QUERY OK db=12.3ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39223, ~N[2026-06-17 10:53:42], ~N[2026-06-17 10:53:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:42.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305678, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:51Z", message: nil, status_log_id: 39223, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:42], updated_at: ~N[2026-06-17 10:53:42]}} [2026-06-17 10:53:42.495] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=16.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:42.497] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:43:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:45.426] [INFO ] Received status update for terminal 61250424798001 [2026-06-17 10:53:45.426] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-06-17T14:53:44Z","org.device":[{"itemkey":"battery","value":23,"timestamp":"2026-06-17T14:53:44Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-06-17T14:53:44Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-06-17T14:53:44Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-06-17T14:53:44Z","message":""}]} [2026-06-17 10:53:45.427] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-06-17T14:53:44Z", "value" => 23}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-06-17T14:53:44Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-06-17T14:53:44Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-06-17T14:53:44Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-06-17T14:53:44Z"} [2026-06-17 10:53:45.427] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:45.429] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=913.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` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:45.429] [INFO ] Terminal updated: 61250424798001 [2026-06-17 10:53:45.491] [DEBUG] QUERY OK source="tms_terminals" db=57.9ms idle=231.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:53:45], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:45.493] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=62.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` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:45.521] [DEBUG] QUERY OK source="tms_terminals" db=27.6ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:45], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:45.549] [DEBUG] QUERY OK db=27.7ms idle=1.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-06-17T14:53:44Z", ~N[2026-06-17 10:53:45], ~N[2026-06-17 10:53:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:45.550] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39224, oid: "org-id-placeholder", upload_time: "2026-06-17T14:53:44Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:45], updated_at: ~N[2026-06-17 10:53:45]} [2026-06-17 10:53:45.550] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-06-17T14:53:44Z", "value" => 23} [2026-06-17 10:53:45.573] [DEBUG] QUERY OK db=23.0ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:53:44Z", "23", "battery", 39224, ~N[2026-06-17 10:53:45], ~N[2026-06-17 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:45.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305679, itemkey: "battery", value: "23", timestamp: "2026-06-17T14:53:44Z", message: nil, status_log_id: 39224, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:45], updated_at: ~N[2026-06-17 10:53:45]}} [2026-06-17 10:53:45.573] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-06-17T14:53:44Z", "value" => 50} [2026-06-17 10:53:45.597] [DEBUG] QUERY OK db=21.5ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-06-17T14:53:44Z", "50", "memory", 39224, ~N[2026-06-17 10:53:45], ~N[2026-06-17 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:45.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305680, itemkey: "memory", value: "50", timestamp: "2026-06-17T14:53:44Z", message: "Normal", status_log_id: 39224, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:45], updated_at: ~N[2026-06-17 10:53:45]}} [2026-06-17 10:53:45.598] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-06-17T14:53:44Z", "value" => 50} [2026-06-17 10:53:45.624] [DEBUG] QUERY OK db=24.8ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:53:44Z", "50", "cpu", 39224, ~N[2026-06-17 10:53:45], ~N[2026-06-17 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:45.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305681, itemkey: "cpu", value: "50", timestamp: "2026-06-17T14:53:44Z", message: nil, status_log_id: 39224, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:45], updated_at: ~N[2026-06-17 10:53:45]}} [2026-06-17 10:53:45.624] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-06-17T14:53:44Z", "value" => "online"} [2026-06-17 10:53:45.643] [DEBUG] QUERY OK db=18.3ms queue=0.3ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:53:44Z", "online", "network", 39224, ~N[2026-06-17 10:53:45], ~N[2026-06-17 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:45.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305682, itemkey: "network", value: "online", timestamp: "2026-06-17T14:53:44Z", message: nil, status_log_id: 39224, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:45], updated_at: ~N[2026-06-17 10:53:45]}} [2026-06-17 10:53:45.644] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-06-17 10:53:45.651] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:53:45.658] [DEBUG] QUERY OK source="tms_terminals" db=6.4ms idle=27.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:45.667] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:48.306] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:48.307] [INFO ] Incoming JSON payload: {"oid":"05646845-736d-4ff3-9f76-c93c2c56ede4","sn":"98251226730002","uploadTime":"2026-06-17T10:52:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"ram_free_mb","value":"760","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:52:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:52:58Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:53:48.308] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "05646845-736d-4ff3-9f76-c93c2c56ede4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:58Z", "value" => "760"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:58Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:52:58Z", "vendor" => "morefun"} [2026-06-17 10:53:48.308] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:48.308] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:48.308] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:53:48.312] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=779.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-06-17 10:53:48.314] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=510.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.`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-06-17 10:53:48.316] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:53:48.316] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:48.317] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:48.340] [DEBUG] QUERY OK source="tms_terminals" db=22.6ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:53:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:48.340] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:48.341] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:48.358] [DEBUG] QUERY OK source="tms_terminals" db=16.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:48.369] [DEBUG] QUERY OK db=10.9ms idle=17.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "05646845-736d-4ff3-9f76-c93c2c56ede4", "2026-06-17T10:52:58Z", ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:48.369] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39225, oid: "05646845-736d-4ff3-9f76-c93c2c56ede4", upload_time: "2026-06-17T10:52:58Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]} [2026-06-17 10:53:48.370] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:52:58Z", "value" => "morefun"} [2026-06-17 10:53:48.387] [DEBUG] QUERY OK db=15.9ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "morefun", "vendor", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305683, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.387] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:52:58Z", "value" => "kiosk_launcher"} [2026-06-17 10:53:48.422] [DEBUG] QUERY OK db=33.5ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "kiosk_launcher", "model", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305684, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.423] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:52:58Z", "value" => "1.0"} [2026-06-17 10:53:48.447] [DEBUG] QUERY OK db=24.6ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "1.0", "app_version", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305685, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.448] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:52:58Z", "value" => "13"} [2026-06-17 10:53:48.462] [DEBUG] QUERY OK db=13.4ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "13", "android_version", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305686, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.462] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:52:58Z", "value" => "760"} [2026-06-17 10:53:48.473] [DEBUG] QUERY OK db=11.0ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "760", "ram_free_mb", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305687, itemkey: "ram_free_mb", value: "760", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.474] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:52:58Z", "value" => "WIFI"} [2026-06-17 10:53:48.500] [DEBUG] QUERY OK db=25.1ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "WIFI", "network_type", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305688, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.500] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:52:58Z", "value" => "true"} [2026-06-17 10:53:48.523] [DEBUG] QUERY OK db=22.5ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "true", "kiosk_active", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305689, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.524] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:52:58Z", "value" => ""} [2026-06-17 10:53:48.552] [DEBUG] QUERY OK db=27.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:52:58Z", "sim_operator", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305690, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.552] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"} [2026-06-17 10:53:48.563] [DEBUG] QUERY OK db=10.8ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "UNKNOWN", "sim_number", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305691, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.564] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"} [2026-06-17 10:53:48.584] [DEBUG] QUERY OK db=19.6ms queue=0.3ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "UNKNOWN", "sim_iccid", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305692, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.585] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"} [2026-06-17 10:53:48.615] [DEBUG] QUERY OK db=28.6ms queue=0.1ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "UNKNOWN", "sim_imsi", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305693, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.615] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"} [2026-06-17 10:53:48.646] [DEBUG] QUERY OK db=30.9ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "UNKNOWN", "sim_iccid2", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305694, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.647] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:52:58Z", "value" => "UNKNOWN"} [2026-06-17 10:53:48.660] [DEBUG] QUERY OK db=12.4ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "UNKNOWN", "sim_imsi2", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305695, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.660] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:52:58Z", "value" => "6"} [2026-06-17 10:53:48.689] [DEBUG] QUERY OK db=28.6ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "6", "data_usage_mb", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305696, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.690] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:52:58Z", "value" => "0"} [2026-06-17 10:53:48.716] [DEBUG] QUERY OK db=25.2ms queue=0.1ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "0", "mobile_data_mb", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305697, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.717] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:52:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:53:48.747] [DEBUG] QUERY OK db=29.1ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:52:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39225, ~N[2026-06-17 10:53:48], ~N[2026-06-17 10:53:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:48.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305698, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:52:58Z", message: nil, status_log_id: 39225, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:48], updated_at: ~N[2026-06-17 10:53:48]}} [2026-06-17 10:53:48.748] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:48.749] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:48]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:53:54.377] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:53:54.377] [INFO ] Incoming JSON payload: {"oid":"25de9c2c-8e26-4e3e-a9da-ca03fdc199c4","sn":"98251226730002","uploadTime":"2026-06-17T10:53:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"ram_free_mb","value":"758","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:53:54.379] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "25de9c2c-8e26-4e3e-a9da-ca03fdc199c4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:04Z", "value" => "758"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:04Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:04Z", "vendor" => "morefun"} [2026-06-17 10:53:54.379] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:53:54.379] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:53:54.379] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:53:54.382] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=836.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-06-17 10:53:54.383] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=181.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-06-17 10:53:54.383] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:53:54.386] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:53:54.386] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:53:54.405] [DEBUG] QUERY OK source="tms_terminals" db=18.4ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:53:54], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:53:54.405] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:53:54.409] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:53:54.426] [DEBUG] QUERY OK source="tms_terminals" db=16.0ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:53:54], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:53:54.461] [DEBUG] QUERY OK db=34.3ms idle=19.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "25de9c2c-8e26-4e3e-a9da-ca03fdc199c4", "2026-06-17T10:53:04Z", ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:53:54.461] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39226, oid: "25de9c2c-8e26-4e3e-a9da-ca03fdc199c4", upload_time: "2026-06-17T10:53:04Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]} [2026-06-17 10:53:54.461] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:04Z", "value" => "morefun"} [2026-06-17 10:53:54.484] [DEBUG] QUERY OK db=22.5ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "morefun", "vendor", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305699, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.485] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:04Z", "value" => "kiosk_launcher"} [2026-06-17 10:53:54.513] [DEBUG] QUERY OK db=28.3ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "kiosk_launcher", "model", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305700, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.514] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:04Z", "value" => "1.0"} [2026-06-17 10:53:54.532] [DEBUG] QUERY OK db=17.9ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "1.0", "app_version", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305701, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.532] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:04Z", "value" => "13"} [2026-06-17 10:53:54.565] [DEBUG] QUERY OK db=30.5ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "13", "android_version", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305702, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.565] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:04Z", "value" => "758"} [2026-06-17 10:53:54.589] [DEBUG] QUERY OK db=23.7ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "758", "ram_free_mb", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305703, itemkey: "ram_free_mb", value: "758", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.591] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:04Z", "value" => "WIFI"} [2026-06-17 10:53:54.614] [DEBUG] QUERY OK db=22.9ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "WIFI", "network_type", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305704, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.615] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:04Z", "value" => "true"} [2026-06-17 10:53:54.636] [DEBUG] QUERY OK db=20.2ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "true", "kiosk_active", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305705, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.637] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:04Z", "value" => ""} [2026-06-17 10:53:54.660] [DEBUG] QUERY OK db=23.2ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:04Z", "sim_operator", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305706, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.661] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"} [2026-06-17 10:53:54.690] [DEBUG] QUERY OK db=29.3ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "UNKNOWN", "sim_number", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305707, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.691] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"} [2026-06-17 10:53:54.709] [DEBUG] QUERY OK db=17.8ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "UNKNOWN", "sim_iccid", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305708, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.710] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"} [2026-06-17 10:53:54.724] [DEBUG] QUERY OK db=13.5ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "UNKNOWN", "sim_imsi", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305709, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.724] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"} [2026-06-17 10:53:54.737] [DEBUG] QUERY OK db=12.7ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "UNKNOWN", "sim_iccid2", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305710, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.738] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:04Z", "value" => "UNKNOWN"} [2026-06-17 10:53:54.770] [DEBUG] QUERY OK db=31.3ms queue=0.1ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "UNKNOWN", "sim_imsi2", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305711, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.770] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:04Z", "value" => "6"} [2026-06-17 10:53:54.793] [DEBUG] QUERY OK db=22.6ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "6", "data_usage_mb", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305712, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.794] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:04Z", "value" => "0"} [2026-06-17 10:53:54.817] [DEBUG] QUERY OK db=22.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:04Z", "0", "mobile_data_mb", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305713, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.819] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:53:54.839] [DEBUG] QUERY OK db=18.6ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39226, ~N[2026-06-17 10:53:54], ~N[2026-06-17 10:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:53:54.840] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305714, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:04Z", message: nil, status_log_id: 39226, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:53:54], updated_at: ~N[2026-06-17 10:53:54]}} [2026-06-17 10:53:54.841] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:53:54.843] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:53:54]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:00.871] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:00.871] [INFO ] Incoming JSON payload: {"oid":"af6e0471-3c1c-42df-83e1-8d79791cc7d8","sn":"98251226730002","uploadTime":"2026-06-17T10:53:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"ram_free_mb","value":"757","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:10Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:00.872] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "af6e0471-3c1c-42df-83e1-8d79791cc7d8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:10Z", "value" => "757"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:10Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:10Z", "vendor" => "morefun"} [2026-06-17 10:54:00.872] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:00.872] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:00.873] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:00.878] [DEBUG] QUERY OK source="parameter_templates" db=4.9ms idle=481.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-06-17 10:54:00.882] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms queue=0.4ms idle=297.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-06-17 10:54:00.882] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:00.883] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=5.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:00.883] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:00.926] [DEBUG] QUERY OK source="tms_terminals" db=42.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:54:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:00.927] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:00.928] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=43.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:00.945] [DEBUG] QUERY OK source="tms_terminals" db=16.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:00.973] [DEBUG] QUERY OK db=27.1ms idle=17.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "af6e0471-3c1c-42df-83e1-8d79791cc7d8", "2026-06-17T10:53:10Z", ~N[2026-06-17 10:54:00], ~N[2026-06-17 10:54:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:00.973] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39227, oid: "af6e0471-3c1c-42df-83e1-8d79791cc7d8", upload_time: "2026-06-17T10:53:10Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:00], updated_at: ~N[2026-06-17 10:54:00]} [2026-06-17 10:54:00.973] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:10Z", "value" => "morefun"} [2026-06-17 10:54:00.996] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "morefun", "vendor", 39227, ~N[2026-06-17 10:54:00], ~N[2026-06-17 10:54:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:00.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305715, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:00], updated_at: ~N[2026-06-17 10:54:00]}} [2026-06-17 10:54:00.998] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:10Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:01.020] [DEBUG] QUERY OK db=21.9ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "kiosk_launcher", "model", 39227, ~N[2026-06-17 10:54:00], ~N[2026-06-17 10:54:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305716, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:00], updated_at: ~N[2026-06-17 10:54:00]}} [2026-06-17 10:54:01.021] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:10Z", "value" => "1.0"} [2026-06-17 10:54:01.036] [DEBUG] QUERY OK db=13.5ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "1.0", "app_version", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305717, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.037] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:10Z", "value" => "13"} [2026-06-17 10:54:01.052] [DEBUG] QUERY OK db=15.0ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "13", "android_version", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305718, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.053] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:10Z", "value" => "757"} [2026-06-17 10:54:01.090] [DEBUG] QUERY OK db=36.2ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "757", "ram_free_mb", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305719, itemkey: "ram_free_mb", value: "757", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.091] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:10Z", "value" => "WIFI"} [2026-06-17 10:54:01.118] [DEBUG] QUERY OK db=27.1ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "WIFI", "network_type", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305720, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.119] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:10Z", "value" => "true"} [2026-06-17 10:54:01.189] [DEBUG] QUERY OK db=70.2ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "true", "kiosk_active", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305721, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.194] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:10Z", "value" => ""} [2026-06-17 10:54:01.208] [DEBUG] QUERY OK db=13.4ms idle=76.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:10Z", "sim_operator", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305722, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.211] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"} [2026-06-17 10:54:01.249] [DEBUG] QUERY OK db=36.5ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "UNKNOWN", "sim_number", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305723, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.249] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"} [2026-06-17 10:54:01.280] [DEBUG] QUERY OK db=28.5ms queue=1.0ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "UNKNOWN", "sim_iccid", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305724, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.280] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"} [2026-06-17 10:54:01.298] [DEBUG] QUERY OK db=17.3ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "UNKNOWN", "sim_imsi", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305725, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.300] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"} [2026-06-17 10:54:01.318] [DEBUG] QUERY OK db=17.5ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "UNKNOWN", "sim_iccid2", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305726, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.318] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:10Z", "value" => "UNKNOWN"} [2026-06-17 10:54:01.342] [DEBUG] QUERY OK db=23.2ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "UNKNOWN", "sim_imsi2", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305727, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.344] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:10Z", "value" => "6"} [2026-06-17 10:54:01.379] [DEBUG] QUERY OK db=33.0ms queue=2.2ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "6", "data_usage_mb", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305728, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.380] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:10Z", "value" => "0"} [2026-06-17 10:54:01.396] [DEBUG] QUERY OK db=15.7ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "0", "mobile_data_mb", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305729, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.397] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:01.416] [DEBUG] QUERY OK db=18.0ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39227, ~N[2026-06-17 10:54:01], ~N[2026-06-17 10:54:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:01.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305730, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:10Z", message: nil, status_log_id: 39227, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:01], updated_at: ~N[2026-06-17 10:54:01]}} [2026-06-17 10:54:01.418] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=21.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:01.420] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:00]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:06.961] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:06.961] [INFO ] Incoming JSON payload: {"oid":"0ac3da16-7e85-4450-aa2e-1b7aa446c5f9","sn":"98251226730002","uploadTime":"2026-06-17T10:53:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"ram_free_mb","value":"756","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:16Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:06.962] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0ac3da16-7e85-4450-aa2e-1b7aa446c5f9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:16Z", "value" => "756"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:16Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:16Z", "vendor" => "morefun"} [2026-06-17 10:54:06.962] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:06.962] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:06.962] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:06.967] [DEBUG] QUERY OK source="parameter_templates" db=4.6ms idle=1330.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:54:06.968] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=330.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-06-17 10:54:06.969] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:06.971] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:06.971] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:06.988] [DEBUG] QUERY OK source="tms_terminals" db=16.0ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:54:06], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:06.988] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:06.992] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=17.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:07.002] [DEBUG] QUERY OK source="tms_terminals" db=9.2ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:06], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:07.017] [DEBUG] QUERY OK db=13.4ms queue=0.7ms idle=9.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0ac3da16-7e85-4450-aa2e-1b7aa446c5f9", "2026-06-17T10:53:16Z", ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:07.017] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39228, oid: "0ac3da16-7e85-4450-aa2e-1b7aa446c5f9", upload_time: "2026-06-17T10:53:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]} [2026-06-17 10:54:07.018] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:16Z", "value" => "morefun"} [2026-06-17 10:54:07.028] [DEBUG] QUERY OK db=9.2ms queue=0.6ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "morefun", "vendor", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305731, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.031] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:16Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:07.049] [DEBUG] QUERY OK db=17.4ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "kiosk_launcher", "model", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305732, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.052] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:16Z", "value" => "1.0"} [2026-06-17 10:54:07.084] [DEBUG] QUERY OK db=30.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "1.0", "app_version", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305733, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.086] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:16Z", "value" => "13"} [2026-06-17 10:54:07.104] [DEBUG] QUERY OK db=17.4ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "13", "android_version", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305734, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.105] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:16Z", "value" => "756"} [2026-06-17 10:54:07.118] [DEBUG] QUERY OK db=12.6ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "756", "ram_free_mb", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305735, itemkey: "ram_free_mb", value: "756", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.128] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:16Z", "value" => "WIFI"} [2026-06-17 10:54:07.147] [DEBUG] QUERY OK db=18.7ms queue=0.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "WIFI", "network_type", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305736, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.147] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:16Z", "value" => "true"} [2026-06-17 10:54:07.164] [DEBUG] QUERY OK db=16.0ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "true", "kiosk_active", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305737, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.164] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:16Z", "value" => ""} [2026-06-17 10:54:07.184] [DEBUG] QUERY OK db=19.7ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:16Z", "sim_operator", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305738, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.185] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"} [2026-06-17 10:54:07.201] [DEBUG] QUERY OK db=16.3ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "UNKNOWN", "sim_number", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305739, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.202] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"} [2026-06-17 10:54:07.219] [DEBUG] QUERY OK db=17.2ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "UNKNOWN", "sim_iccid", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305740, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.220] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"} [2026-06-17 10:54:07.241] [DEBUG] QUERY OK db=18.3ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "UNKNOWN", "sim_imsi", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305741, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.242] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"} [2026-06-17 10:54:07.257] [DEBUG] QUERY OK db=14.7ms queue=0.1ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "UNKNOWN", "sim_iccid2", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305742, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.258] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:16Z", "value" => "UNKNOWN"} [2026-06-17 10:54:07.272] [DEBUG] QUERY OK db=14.5ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "UNKNOWN", "sim_imsi2", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305743, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.273] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:16Z", "value" => "6"} [2026-06-17 10:54:07.296] [DEBUG] QUERY OK db=16.9ms queue=5.6ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "6", "data_usage_mb", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305744, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.296] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:16Z", "value" => "0"} [2026-06-17 10:54:07.318] [DEBUG] QUERY OK db=21.5ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "0", "mobile_data_mb", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305745, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.319] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:07.344] [DEBUG] QUERY OK db=23.7ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39228, ~N[2026-06-17 10:54:07], ~N[2026-06-17 10:54:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:07.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305746, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:16Z", message: nil, status_log_id: 39228, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:07], updated_at: ~N[2026-06-17 10:54:07]}} [2026-06-17 10:54:07.351] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=32.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:07.352] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:06]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:13.176] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:13.176] [INFO ] Incoming JSON payload: {"oid":"c75dbf26-b78e-4ba1-a862-900793b95d26","sn":"98251226730002","uploadTime":"2026-06-17T10:53:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"ram_free_mb","value":"750","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:22Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:13.178] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c75dbf26-b78e-4ba1-a862-900793b95d26", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:22Z", "value" => "750"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:22Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:22Z", "vendor" => "morefun"} [2026-06-17 10:54:13.178] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:13.182] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:13.182] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:13.182] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1523.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-06-17 10:54:13.183] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=519.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.`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-06-17 10:54:13.183] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:13.184] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:13.184] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:13.202] [DEBUG] QUERY OK source="tms_terminals" db=17.3ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:54:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:13.202] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:13.203] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=18.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:13.227] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:13.250] [DEBUG] QUERY OK db=23.3ms idle=23.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c75dbf26-b78e-4ba1-a862-900793b95d26", "2026-06-17T10:53:22Z", ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:13.251] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39229, oid: "c75dbf26-b78e-4ba1-a862-900793b95d26", upload_time: "2026-06-17T10:53:22Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]} [2026-06-17 10:54:13.253] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:22Z", "value" => "morefun"} [2026-06-17 10:54:13.269] [DEBUG] QUERY OK db=15.9ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "morefun", "vendor", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305747, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.270] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:22Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:13.284] [DEBUG] QUERY OK db=13.8ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "kiosk_launcher", "model", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305748, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.284] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:22Z", "value" => "1.0"} [2026-06-17 10:54:13.310] [DEBUG] QUERY OK db=25.7ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "1.0", "app_version", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305749, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.311] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:22Z", "value" => "13"} [2026-06-17 10:54:13.337] [DEBUG] QUERY OK db=24.2ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "13", "android_version", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305750, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.338] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:22Z", "value" => "750"} [2026-06-17 10:54:13.363] [DEBUG] QUERY OK db=23.7ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "750", "ram_free_mb", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305751, itemkey: "ram_free_mb", value: "750", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.363] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:22Z", "value" => "WIFI"} [2026-06-17 10:54:13.384] [DEBUG] QUERY OK db=19.2ms queue=0.5ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "WIFI", "network_type", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305752, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.384] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:22Z", "value" => "true"} [2026-06-17 10:54:13.404] [DEBUG] QUERY OK db=19.0ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "true", "kiosk_active", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305753, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.406] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:22Z", "value" => ""} [2026-06-17 10:54:13.438] [DEBUG] QUERY OK db=31.6ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:22Z", "sim_operator", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305754, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.438] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"} [2026-06-17 10:54:13.458] [DEBUG] QUERY OK db=19.4ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "UNKNOWN", "sim_number", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305755, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.459] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"} [2026-06-17 10:54:13.469] [DEBUG] QUERY OK db=10.4ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "UNKNOWN", "sim_iccid", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305756, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.470] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"} [2026-06-17 10:54:13.482] [DEBUG] QUERY OK db=11.3ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "UNKNOWN", "sim_imsi", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305757, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.484] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"} [2026-06-17 10:54:13.509] [DEBUG] QUERY OK db=24.8ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "UNKNOWN", "sim_iccid2", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305758, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.510] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:22Z", "value" => "UNKNOWN"} [2026-06-17 10:54:13.536] [DEBUG] QUERY OK db=25.0ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "UNKNOWN", "sim_imsi2", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305759, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.536] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:22Z", "value" => "6"} [2026-06-17 10:54:13.556] [DEBUG] QUERY OK db=19.5ms decode=0.2ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "6", "data_usage_mb", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305760, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.557] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:22Z", "value" => "0"} [2026-06-17 10:54:13.571] [DEBUG] QUERY OK db=13.4ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "0", "mobile_data_mb", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305761, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.572] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:13.589] [DEBUG] QUERY OK db=16.7ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39229, ~N[2026-06-17 10:54:13], ~N[2026-06-17 10:54:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:13.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305762, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:22Z", message: nil, status_log_id: 39229, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:13], updated_at: ~N[2026-06-17 10:54:13]}} [2026-06-17 10:54:13.593] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.2ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:13.594] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:13]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:19.245] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:19.245] [INFO ] Incoming JSON payload: {"oid":"d08268be-7ce1-4faa-9a3a-c08decf68292","sn":"98251226730002","uploadTime":"2026-06-17T10:53:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"ram_free_mb","value":"750","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:29Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:19.249] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d08268be-7ce1-4faa-9a3a-c08decf68292", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:29Z", "value" => "750"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:29Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:29Z", "vendor" => "morefun"} [2026-06-17 10:54:19.249] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:19.249] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:19.249] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:19.252] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=1045.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-06-17 10:54:19.253] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=572.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-06-17 10:54:19.253] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:19.253] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:19.254] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:19.289] [DEBUG] QUERY OK source="tms_terminals" db=35.0ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:54:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:19.289] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:19.293] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=35.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:19.323] [DEBUG] QUERY OK source="tms_terminals" db=29.6ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:19.338] [DEBUG] QUERY OK db=14.0ms queue=0.1ms idle=30.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d08268be-7ce1-4faa-9a3a-c08decf68292", "2026-06-17T10:53:29Z", ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:19.340] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39230, oid: "d08268be-7ce1-4faa-9a3a-c08decf68292", upload_time: "2026-06-17T10:53:29Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]} [2026-06-17 10:54:19.340] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:29Z", "value" => "morefun"} [2026-06-17 10:54:19.355] [DEBUG] QUERY OK db=14.8ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "morefun", "vendor", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305763, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.356] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:29Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:19.384] [DEBUG] QUERY OK db=28.0ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "kiosk_launcher", "model", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305764, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.385] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:29Z", "value" => "1.0"} [2026-06-17 10:54:19.412] [DEBUG] QUERY OK db=26.8ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "1.0", "app_version", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305765, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.412] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:29Z", "value" => "13"} [2026-06-17 10:54:19.428] [DEBUG] QUERY OK db=15.5ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "13", "android_version", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305766, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.428] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:29Z", "value" => "750"} [2026-06-17 10:54:19.441] [DEBUG] QUERY OK db=12.7ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "750", "ram_free_mb", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305767, itemkey: "ram_free_mb", value: "750", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.442] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:29Z", "value" => "WIFI"} [2026-06-17 10:54:19.470] [DEBUG] QUERY OK db=23.6ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "WIFI", "network_type", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305768, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.471] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:29Z", "value" => "true"} [2026-06-17 10:54:19.496] [DEBUG] QUERY OK db=25.1ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "true", "kiosk_active", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305769, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.497] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:29Z", "value" => ""} [2026-06-17 10:54:19.527] [DEBUG] QUERY OK db=25.8ms queue=3.8ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:29Z", "sim_operator", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305770, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.527] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"} [2026-06-17 10:54:19.539] [DEBUG] QUERY OK db=11.3ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "UNKNOWN", "sim_number", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305771, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.540] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"} [2026-06-17 10:54:19.559] [DEBUG] QUERY OK db=17.3ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "UNKNOWN", "sim_iccid", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305772, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.560] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"} [2026-06-17 10:54:19.587] [DEBUG] QUERY OK db=26.4ms queue=0.1ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "UNKNOWN", "sim_imsi", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305773, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.587] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"} [2026-06-17 10:54:19.611] [DEBUG] QUERY OK db=23.3ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "UNKNOWN", "sim_iccid2", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305774, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.612] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:29Z", "value" => "UNKNOWN"} [2026-06-17 10:54:19.626] [DEBUG] QUERY OK db=12.8ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "UNKNOWN", "sim_imsi2", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305775, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.626] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:29Z", "value" => "6"} [2026-06-17 10:54:19.643] [DEBUG] QUERY OK db=16.4ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "6", "data_usage_mb", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305776, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.643] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:29Z", "value" => "0"} [2026-06-17 10:54:19.690] [DEBUG] QUERY OK db=45.9ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "0", "mobile_data_mb", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305777, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.691] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:19.712] [DEBUG] QUERY OK db=15.9ms idle=8.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39230, ~N[2026-06-17 10:54:19], ~N[2026-06-17 10:54:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:19.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305778, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:29Z", message: nil, status_log_id: 39230, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:19], updated_at: ~N[2026-06-17 10:54:19]}} [2026-06-17 10:54:19.716] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=23.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:19.721] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:19]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:25.154] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:25.154] [INFO ] Incoming JSON payload: {"oid":"6f5c902e-60de-4362-81fb-8f34897a9039","sn":"98251226730002","uploadTime":"2026-06-17T10:53:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"ram_free_mb","value":"750","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:35Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:25.155] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6f5c902e-60de-4362-81fb-8f34897a9039", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:35Z", "value" => "750"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:35Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:35Z", "vendor" => "morefun"} [2026-06-17 10:54:25.155] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:25.155] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:25.155] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:25.159] [DEBUG] QUERY OK source="parameter_templates" db=3.6ms idle=1455.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-06-17 10:54:25.160] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=454.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.`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-06-17 10:54:25.160] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:25.163] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:25.163] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:25.190] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:54:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:25.190] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:25.193] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:25.208] [DEBUG] QUERY OK source="tms_terminals" db=14.3ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:25.233] [DEBUG] QUERY OK db=25.5ms idle=15.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6f5c902e-60de-4362-81fb-8f34897a9039", "2026-06-17T10:53:35Z", ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:25.234] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39231, oid: "6f5c902e-60de-4362-81fb-8f34897a9039", upload_time: "2026-06-17T10:53:35Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]} [2026-06-17 10:54:25.234] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:35Z", "value" => "morefun"} [2026-06-17 10:54:25.266] [DEBUG] QUERY OK db=29.0ms queue=3.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "morefun", "vendor", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305779, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.268] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:35Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:25.284] [DEBUG] QUERY OK db=15.8ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "kiosk_launcher", "model", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305780, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.286] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:35Z", "value" => "1.0"} [2026-06-17 10:54:25.300] [DEBUG] QUERY OK db=13.5ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "1.0", "app_version", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305781, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.303] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:35Z", "value" => "13"} [2026-06-17 10:54:25.343] [DEBUG] QUERY OK db=39.6ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "13", "android_version", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305782, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.344] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:35Z", "value" => "750"} [2026-06-17 10:54:25.367] [DEBUG] QUERY OK db=20.5ms queue=0.2ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "750", "ram_free_mb", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305783, itemkey: "ram_free_mb", value: "750", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.367] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:35Z", "value" => "WIFI"} [2026-06-17 10:54:25.385] [DEBUG] QUERY OK db=16.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "WIFI", "network_type", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305784, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.386] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:35Z", "value" => "true"} [2026-06-17 10:54:25.405] [DEBUG] QUERY OK db=17.8ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "true", "kiosk_active", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305785, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.410] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:35Z", "value" => ""} [2026-06-17 10:54:25.442] [DEBUG] QUERY OK db=31.4ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:35Z", "sim_operator", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305786, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.444] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"} [2026-06-17 10:54:25.470] [DEBUG] QUERY OK db=23.3ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "UNKNOWN", "sim_number", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305787, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.471] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"} [2026-06-17 10:54:25.485] [DEBUG] QUERY OK db=13.8ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "UNKNOWN", "sim_iccid", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305788, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.485] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"} [2026-06-17 10:54:25.500] [DEBUG] QUERY OK db=14.5ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "UNKNOWN", "sim_imsi", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305789, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.501] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"} [2026-06-17 10:54:25.524] [DEBUG] QUERY OK db=22.8ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "UNKNOWN", "sim_iccid2", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305790, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.524] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:35Z", "value" => "UNKNOWN"} [2026-06-17 10:54:25.549] [DEBUG] QUERY OK db=24.2ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "UNKNOWN", "sim_imsi2", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305791, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.549] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:35Z", "value" => "6"} [2026-06-17 10:54:25.580] [DEBUG] QUERY OK db=29.6ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "6", "data_usage_mb", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305792, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.580] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:35Z", "value" => "0"} [2026-06-17 10:54:25.603] [DEBUG] QUERY OK db=21.9ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "0", "mobile_data_mb", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305793, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.603] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:25.627] [DEBUG] QUERY OK db=22.9ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39231, ~N[2026-06-17 10:54:25], ~N[2026-06-17 10:54:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:25.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305794, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:35Z", message: nil, status_log_id: 39231, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:25], updated_at: ~N[2026-06-17 10:54:25]}} [2026-06-17 10:54:25.631] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=25.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:25.632] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:25]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:31.412] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:31.412] [INFO ] Incoming JSON payload: {"oid":"5a1cf0aa-bafb-4860-b884-194fa08f094e","sn":"98251226730002","uploadTime":"2026-06-17T10:53:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"ram_free_mb","value":"758","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:41Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:31.413] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5a1cf0aa-bafb-4860-b884-194fa08f094e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:41Z", "value" => "758"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:41Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:41Z", "vendor" => "morefun"} [2026-06-17 10:54:31.413] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:31.413] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:31.413] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:31.417] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=967.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-06-17 10:54:31.421] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=2.8ms idle=690.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.`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-06-17 10:54:31.421] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:31.424] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:31.424] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:31.446] [DEBUG] QUERY OK source="tms_terminals" db=22.0ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:54:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:31.447] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:31.448] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:31.460] [DEBUG] QUERY OK source="tms_terminals" db=11.5ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:31.475] [DEBUG] QUERY OK db=14.2ms idle=12.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5a1cf0aa-bafb-4860-b884-194fa08f094e", "2026-06-17T10:53:41Z", ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:31.475] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39232, oid: "5a1cf0aa-bafb-4860-b884-194fa08f094e", upload_time: "2026-06-17T10:53:41Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]} [2026-06-17 10:54:31.475] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:41Z", "value" => "morefun"} [2026-06-17 10:54:31.511] [DEBUG] QUERY OK db=35.3ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "morefun", "vendor", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305795, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.511] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:41Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:31.537] [DEBUG] QUERY OK db=26.0ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "kiosk_launcher", "model", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305796, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.538] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:41Z", "value" => "1.0"} [2026-06-17 10:54:31.554] [DEBUG] QUERY OK db=14.9ms queue=0.1ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "1.0", "app_version", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305797, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.554] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:41Z", "value" => "13"} [2026-06-17 10:54:31.567] [DEBUG] QUERY OK db=12.3ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "13", "android_version", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305798, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.567] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:41Z", "value" => "758"} [2026-06-17 10:54:31.588] [DEBUG] QUERY OK db=20.1ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "758", "ram_free_mb", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305799, itemkey: "ram_free_mb", value: "758", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.588] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:41Z", "value" => "WIFI"} [2026-06-17 10:54:31.612] [DEBUG] QUERY OK db=23.2ms queue=0.1ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "WIFI", "network_type", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305800, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.612] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:41Z", "value" => "true"} [2026-06-17 10:54:31.639] [DEBUG] QUERY OK db=26.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "true", "kiosk_active", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305801, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.640] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:41Z", "value" => ""} [2026-06-17 10:54:31.652] [DEBUG] QUERY OK db=11.8ms queue=0.1ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:41Z", "sim_operator", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305802, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.653] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"} [2026-06-17 10:54:31.668] [DEBUG] QUERY OK db=14.3ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "UNKNOWN", "sim_number", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305803, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.668] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"} [2026-06-17 10:54:31.692] [DEBUG] QUERY OK db=23.0ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "UNKNOWN", "sim_iccid", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305804, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.692] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"} [2026-06-17 10:54:31.716] [DEBUG] QUERY OK db=23.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "UNKNOWN", "sim_imsi", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305805, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.716] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"} [2026-06-17 10:54:31.741] [DEBUG] QUERY OK db=23.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "UNKNOWN", "sim_iccid2", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305806, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.741] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:41Z", "value" => "UNKNOWN"} [2026-06-17 10:54:31.753] [DEBUG] QUERY OK db=11.6ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "UNKNOWN", "sim_imsi2", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305807, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.753] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:41Z", "value" => "6"} [2026-06-17 10:54:31.772] [DEBUG] QUERY OK db=17.9ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "6", "data_usage_mb", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305808, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.772] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:41Z", "value" => "0"} [2026-06-17 10:54:31.797] [DEBUG] QUERY OK db=23.3ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "0", "mobile_data_mb", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305809, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.798] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:31.834] [DEBUG] QUERY OK db=34.8ms queue=0.1ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39232, ~N[2026-06-17 10:54:31], ~N[2026-06-17 10:54:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:31.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305810, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:41Z", message: nil, status_log_id: 39232, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:31], updated_at: ~N[2026-06-17 10:54:31]}} [2026-06-17 10:54:31.837] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.9ms idle=38.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:31.838] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:31]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:37.917] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:37.917] [INFO ] Incoming JSON payload: {"oid":"3ce5ba1d-570b-4308-baf4-f85700d9e0d2","sn":"98251226730002","uploadTime":"2026-06-17T10:53:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"ram_free_mb","value":"753","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:47Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:37.918] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3ce5ba1d-570b-4308-baf4-f85700d9e0d2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:47Z", "value" => "753"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:47Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:47Z", "vendor" => "morefun"} [2026-06-17 10:54:37.918] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:37.918] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:37.918] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:37.919] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=714.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-06-17 10:54:37.920] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=173.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-06-17 10:54:37.920] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:37.921] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:37.921] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:37.939] [DEBUG] QUERY OK source="tms_terminals" db=17.0ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:54:37], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:37.939] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:37.940] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=18.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:37.963] [DEBUG] QUERY OK source="tms_terminals" db=22.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:37], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:37.995] [DEBUG] QUERY OK db=30.9ms idle=23.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3ce5ba1d-570b-4308-baf4-f85700d9e0d2", "2026-06-17T10:53:47Z", ~N[2026-06-17 10:54:37], ~N[2026-06-17 10:54:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:37.995] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39233, oid: "3ce5ba1d-570b-4308-baf4-f85700d9e0d2", upload_time: "2026-06-17T10:53:47Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:37], updated_at: ~N[2026-06-17 10:54:37]} [2026-06-17 10:54:37.995] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:47Z", "value" => "morefun"} [2026-06-17 10:54:38.012] [DEBUG] QUERY OK db=16.9ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "morefun", "vendor", 39233, ~N[2026-06-17 10:54:37], ~N[2026-06-17 10:54:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305811, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:37], updated_at: ~N[2026-06-17 10:54:37]}} [2026-06-17 10:54:38.013] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:47Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:38.025] [DEBUG] QUERY OK db=11.5ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "kiosk_launcher", "model", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305812, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.026] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:47Z", "value" => "1.0"} [2026-06-17 10:54:38.050] [DEBUG] QUERY OK db=23.8ms queue=0.5ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "1.0", "app_version", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305813, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.051] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:47Z", "value" => "13"} [2026-06-17 10:54:38.089] [DEBUG] QUERY OK db=38.0ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "13", "android_version", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305814, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.090] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:47Z", "value" => "753"} [2026-06-17 10:54:38.161] [DEBUG] QUERY OK db=70.9ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "753", "ram_free_mb", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305815, itemkey: "ram_free_mb", value: "753", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.161] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:47Z", "value" => "WIFI"} [2026-06-17 10:54:38.180] [DEBUG] QUERY OK db=18.6ms idle=72.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "WIFI", "network_type", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305816, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.181] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:47Z", "value" => "true"} [2026-06-17 10:54:38.197] [DEBUG] QUERY OK db=15.4ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "true", "kiosk_active", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305817, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.197] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:47Z", "value" => ""} [2026-06-17 10:54:38.216] [DEBUG] QUERY OK db=18.3ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:47Z", "sim_operator", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305818, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.217] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"} [2026-06-17 10:54:38.243] [DEBUG] QUERY OK db=25.7ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "UNKNOWN", "sim_number", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305819, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.243] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"} [2026-06-17 10:54:38.266] [DEBUG] QUERY OK db=22.9ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "UNKNOWN", "sim_iccid", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305820, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.267] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"} [2026-06-17 10:54:38.284] [DEBUG] QUERY OK db=16.8ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "UNKNOWN", "sim_imsi", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305821, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.284] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"} [2026-06-17 10:54:38.296] [DEBUG] QUERY OK db=10.9ms queue=0.1ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "UNKNOWN", "sim_iccid2", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305822, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.296] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:47Z", "value" => "UNKNOWN"} [2026-06-17 10:54:38.308] [DEBUG] QUERY OK db=11.2ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "UNKNOWN", "sim_imsi2", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305823, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.309] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:47Z", "value" => "6"} [2026-06-17 10:54:38.350] [DEBUG] QUERY OK db=40.2ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "6", "data_usage_mb", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305824, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.351] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:47Z", "value" => "0"} [2026-06-17 10:54:38.375] [DEBUG] QUERY OK db=23.1ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "0", "mobile_data_mb", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305825, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.376] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:38.394] [DEBUG] QUERY OK db=16.5ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39233, ~N[2026-06-17 10:54:38], ~N[2026-06-17 10:54:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:38.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305826, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:47Z", message: nil, status_log_id: 39233, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:38], updated_at: ~N[2026-06-17 10:54:38]}} [2026-06-17 10:54:38.397] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=21.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:38.398] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:37]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:39.803] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:39.804] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:53:50Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:53:50Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:53:50Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:53:50Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:53:50Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:53:50Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:53:50Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:53:50Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:53:50Z","vendor":"MoreFun"} [2026-06-17 10:54:39.804] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:53:50Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:53:50Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:53:50Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:53:50Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:53:50Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:53:50Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:53:50Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:53:50Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:50Z", "vendor" => "MoreFun"} [2026-06-17 10:54:39.804] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 10:54:39.804] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:39.804] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:54:39.806] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=1056.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-06-17 10:54:39.808] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=56.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:54:39.808] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms 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-06-17 10:54:39.810] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.5ms idle=1.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-06-17 10:54:39.811] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=1.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:54:39.852] [DEBUG] QUERY OK source="pos_merchant" db=40.3ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:54:39.853] [DEBUG] QUERY OK db=0.8ms queue=0.5ms idle=1633.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 ["372916040000000"] [2026-06-17 10:54:39.853] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:54:39.855] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:54:39.855] [DEBUG] QUERY OK source="address" db=0.5ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:54:39.856] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:54:39.858] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:54:39.887] [DEBUG] QUERY OK db=24.2ms idle=7.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", "2dd02c4678df5589f751fbbc8132eb8e289833c7b531ed13fb529ea13dd99309", 2244, 940, ~U[2026-06-17 10:54:39Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:54:39], ~N[2026-06-17 10:54:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:54:39.887] [INFO ] AutoPushService: Created push log 29747 for MF919 params.zip [2026-06-17 10:54:39.887] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2244, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:54:39.887] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:54:39.887] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:54:39.889] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=31.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-06-17 10:54:39.895] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:54:39.908] [DEBUG] QUERY OK db=11.0ms 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", "88638742810dbb574fc3c31480b575cb05f35e994ca6345c231316d53fe418be", 2340, 17947, ~U[2026-06-17 10:54:39Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:54:39], ~N[2026-06-17 10:54:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:54:39.908] [INFO ] AutoPushService: Created push log 29748 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:54:39.909] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2340, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:54:39.909] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:54:39.909] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:54:39.911] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.1ms idle=20.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-06-17 10:54:39.911] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:54:39.912] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:54:39.912] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:54:39.913] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:54:39.913] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:54:39.913] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:54:39.915] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-06-17 10:54:39.915] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:54:39.915] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:54:39.917] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:39.986] [DEBUG] QUERY OK source="tms_terminals" db=25.0ms queue=42.5ms idle=3.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:54:39], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:54:39.986] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:39.986] [INFO ] Event published: terminal_updated [2026-06-17 10:54:39.986] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:54:39.986] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:54:39.987] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:54:39.987] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=0.1ms idle=69.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-06-17 10:54:39], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:54:39.988] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:54:39.989] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms 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-06-17 10:54:39.989] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:54:40.051] [DEBUG] QUERY OK source="tms_terminals" db=22.1ms queue=41.4ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 10:54:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:40.052] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=62.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-06-17 10:54:40.054] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-06-17 10:54:40.054] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:40.054] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:40.108] [DEBUG] QUERY OK source="tms_terminals" db=11.5ms queue=41.8ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:40.142] [DEBUG] QUERY OK db=33.2ms idle=53.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:53:50Z", ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:40.142] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39234, oid: "organization_id", upload_time: "2026-06-17T10:53:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]} [2026-06-17 10:54:40.142] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:53:50Z", "value" => "online"} [2026-06-17 10:54:40.166] [DEBUG] QUERY OK db=23.5ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:53:50Z", "online", "status", 39234, ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:40.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305827, itemkey: "status", value: "online", timestamp: "2026-06-17T10:53:50Z", message: "Terminal status update", status_log_id: 39234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]}} [2026-06-17 10:54:40.167] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:54:40.167] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:53:50Z", "value" => "42"} [2026-06-17 10:54:40.168] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:54:40.188] [DEBUG] QUERY OK db=20.7ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:53:50Z", "42", "battery", 39234, ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:40.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305828, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:53:50Z", message: "Battery level", status_log_id: 39234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]}} [2026-06-17 10:54:40.188] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:53:50Z", "value" => "online"} [2026-06-17 10:54:40.209] [DEBUG] QUERY OK db=20.7ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:53:50Z", "online", "network", 39234, ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:40.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305829, itemkey: "network", value: "online", timestamp: "2026-06-17T10:53:50Z", message: "Network connectivity", status_log_id: 39234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]}} [2026-06-17 10:54:40.210] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:54:40.210] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:53:50Z", "value" => "0"} [2026-06-17 10:54:40.210] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:54:40.242] [DEBUG] QUERY OK db=29.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:53:50Z", "0", "cpu", 39234, ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:40.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305830, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:53:50Z", message: "CPU usage percentage", status_log_id: 39234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]}} [2026-06-17 10:54:40.243] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:53:50Z", "value" => "1.0.0"} [2026-06-17 10:54:40.276] [DEBUG] QUERY OK db=33.5ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:53:50Z", "1.0.0", "parameter_config", 39234, ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:40.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305831, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T10:53:50Z", message: "Current parameters version", status_log_id: 39234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]}} [2026-06-17 10:54:40.277] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:53:50Z", "value" => "1.0.1"} [2026-06-17 10:54:40.294] [DEBUG] QUERY OK db=16.9ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:53:50Z", "1.0.1", "emv_config", 39234, ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:40.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305832, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T10:53:50Z", message: "Current EMV config version", status_log_id: 39234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]}} [2026-06-17 10:54:40.294] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:53:50Z", "value" => ""} [2026-06-17 10:54:40.352] [DEBUG] QUERY OK db=16.1ms queue=40.6ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:53:50Z", "keys_config", 39234, ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:40.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305833, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:53:50Z", message: "Current keys config version", status_log_id: 39234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]}} [2026-06-17 10:54:40.352] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:53:50Z", "value" => ""} [2026-06-17 10:54:40.424] [DEBUG] QUERY OK db=24.0ms queue=42.3ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:53:50Z", "application", 39234, ~N[2026-06-17 10:54:40], ~N[2026-06-17 10:54:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:40.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305834, itemkey: "application", value: nil, timestamp: "2026-06-17T10:53:50Z", message: "Current application version", status_log_id: 39234, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:40], updated_at: ~N[2026-06-17 10:54:40]}} [2026-06-17 10:54:40.429] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms queue=0.1ms idle=73.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:40.429] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:40]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:40.424] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:53:50Z"} [2026-06-17 10:54:40.432] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:53:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 15, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{"phoenix_client_shamanth" => true}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:54:43.691] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:43.691] [INFO ] Incoming JSON payload: {"oid":"dfb5cc18-99b3-4a70-b54f-3aab2da830df","sn":"98251226730002","uploadTime":"2026-06-17T10:53:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"ram_free_mb","value":"749","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:53Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:43.693] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dfb5cc18-99b3-4a70-b54f-3aab2da830df", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:53Z", "value" => "749"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:53Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:53Z", "vendor" => "morefun"} [2026-06-17 10:54:43.693] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:43.693] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:43.693] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:43.694] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1480.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:54:43.695] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=933.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-06-17 10:54:43.695] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:43.697] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=1.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:43.774] [DEBUG] QUERY OK source="tms_terminals" db=34.7ms queue=42.5ms idle=2.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:54:43], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:54:43.774] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:43.775] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:54:43.776] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:54:43.776] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:54:43.775] [INFO ] Event published: terminal_updated [2026-06-17 10:54:43.779] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=1.7ms idle=0.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-06-17 10:54:43], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:54:43.780] [DEBUG] QUERY OK source="tms_terminals" db=0.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 WHERE (t0.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:54:43.792] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=11.2ms idle=0.0ms 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-06-17 10:54:43.792] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:54:43.835] [DEBUG] QUERY OK source="tms_terminals" db=14.3ms queue=41.2ms idle=0.0ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 10:54:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:43.835] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:43.836] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=43.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:43.895] [DEBUG] QUERY OK source="tms_terminals" db=17.8ms queue=41.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:43.922] [DEBUG] QUERY OK db=25.7ms idle=59.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "dfb5cc18-99b3-4a70-b54f-3aab2da830df", "2026-06-17T10:53:53Z", ~N[2026-06-17 10:54:43], ~N[2026-06-17 10:54:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:43.923] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39235, oid: "dfb5cc18-99b3-4a70-b54f-3aab2da830df", upload_time: "2026-06-17T10:53:53Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:43], updated_at: ~N[2026-06-17 10:54:43]} [2026-06-17 10:54:43.923] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:53Z", "value" => "morefun"} [2026-06-17 10:54:43.981] [DEBUG] QUERY OK db=14.6ms queue=42.8ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "morefun", "vendor", 39235, ~N[2026-06-17 10:54:43], ~N[2026-06-17 10:54:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:43.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305835, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:43], updated_at: ~N[2026-06-17 10:54:43]}} [2026-06-17 10:54:43.986] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:53Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:44.041] [DEBUG] QUERY OK db=12.4ms queue=41.8ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "kiosk_launcher", "model", 39235, ~N[2026-06-17 10:54:43], ~N[2026-06-17 10:54:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305836, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:43], updated_at: ~N[2026-06-17 10:54:43]}} [2026-06-17 10:54:44.042] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:53Z", "value" => "1.0"} [2026-06-17 10:54:44.083] [DEBUG] QUERY OK db=40.5ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "1.0", "app_version", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305837, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.083] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:53Z", "value" => "13"} [2026-06-17 10:54:44.110] [DEBUG] QUERY OK db=26.6ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "13", "android_version", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305838, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.111] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:53Z", "value" => "749"} [2026-06-17 10:54:44.147] [DEBUG] QUERY OK db=35.2ms queue=0.2ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "749", "ram_free_mb", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305839, itemkey: "ram_free_mb", value: "749", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.147] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:53Z", "value" => "WIFI"} [2026-06-17 10:54:44.183] [DEBUG] QUERY OK db=34.6ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "WIFI", "network_type", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305840, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.184] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:53Z", "value" => "true"} [2026-06-17 10:54:44.204] [DEBUG] QUERY OK db=17.5ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "true", "kiosk_active", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305841, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.204] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:53Z", "value" => ""} [2026-06-17 10:54:44.230] [DEBUG] QUERY OK db=25.7ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:53Z", "sim_operator", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305842, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.235] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"} [2026-06-17 10:54:44.266] [DEBUG] QUERY OK db=29.6ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "UNKNOWN", "sim_number", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305843, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.267] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"} [2026-06-17 10:54:44.287] [DEBUG] QUERY OK db=17.5ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "UNKNOWN", "sim_iccid", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305844, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.289] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"} [2026-06-17 10:54:44.302] [DEBUG] QUERY OK db=12.1ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "UNKNOWN", "sim_imsi", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305845, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.305] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"} [2026-06-17 10:54:44.335] [DEBUG] QUERY OK db=29.5ms queue=0.1ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "UNKNOWN", "sim_iccid2", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305846, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.336] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:53Z", "value" => "UNKNOWN"} [2026-06-17 10:54:44.372] [DEBUG] QUERY OK db=35.8ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "UNKNOWN", "sim_imsi2", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305847, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.372] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:53Z", "value" => "6"} [2026-06-17 10:54:44.388] [DEBUG] QUERY OK db=15.6ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "6", "data_usage_mb", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305848, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.389] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:53Z", "value" => "0"} [2026-06-17 10:54:44.405] [DEBUG] QUERY OK db=15.9ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "0", "mobile_data_mb", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305849, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.407] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:44.445] [DEBUG] QUERY OK db=36.2ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39235, ~N[2026-06-17 10:54:44], ~N[2026-06-17 10:54:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:44.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305850, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:53Z", message: nil, status_log_id: 39235, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:44], updated_at: ~N[2026-06-17 10:54:44]}} [2026-06-17 10:54:44.448] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=42.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:44.449] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:43]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:49.863] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:49.863] [INFO ] Incoming JSON payload: {"oid":"26594bd7-1ba3-4fb8-a742-e3febe0c4ac4","sn":"98251226730002","uploadTime":"2026-06-17T10:53:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"ram_free_mb","value":"747","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:53:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:53:59Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:49.864] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "26594bd7-1ba3-4fb8-a742-e3febe0c4ac4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:59Z", "value" => "747"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:59Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:53:59Z", "vendor" => "morefun"} [2026-06-17 10:54:49.864] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:49.864] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:49.864] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:49.865] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1068.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:54:49.866] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=65.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.`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-06-17 10:54:49.867] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:49.869] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:49.869] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:49.890] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:54:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:49.890] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:49.891] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=21.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:49.904] [DEBUG] QUERY OK source="tms_terminals" db=13.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:49.917] [DEBUG] QUERY OK db=12.6ms idle=13.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "26594bd7-1ba3-4fb8-a742-e3febe0c4ac4", "2026-06-17T10:53:59Z", ~N[2026-06-17 10:54:49], ~N[2026-06-17 10:54:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:49.918] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39236, oid: "26594bd7-1ba3-4fb8-a742-e3febe0c4ac4", upload_time: "2026-06-17T10:53:59Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:49], updated_at: ~N[2026-06-17 10:54:49]} [2026-06-17 10:54:49.918] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:53:59Z", "value" => "morefun"} [2026-06-17 10:54:49.945] [DEBUG] QUERY OK db=26.3ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "morefun", "vendor", 39236, ~N[2026-06-17 10:54:49], ~N[2026-06-17 10:54:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:49.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305851, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:49], updated_at: ~N[2026-06-17 10:54:49]}} [2026-06-17 10:54:49.945] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:53:59Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:49.970] [DEBUG] QUERY OK db=23.9ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "kiosk_launcher", "model", 39236, ~N[2026-06-17 10:54:49], ~N[2026-06-17 10:54:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:49.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305852, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:49], updated_at: ~N[2026-06-17 10:54:49]}} [2026-06-17 10:54:49.970] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:53:59Z", "value" => "1.0"} [2026-06-17 10:54:49.995] [DEBUG] QUERY OK db=24.6ms queue=0.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "1.0", "app_version", 39236, ~N[2026-06-17 10:54:49], ~N[2026-06-17 10:54:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:49.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305853, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:49], updated_at: ~N[2026-06-17 10:54:49]}} [2026-06-17 10:54:49.996] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:53:59Z", "value" => "13"} [2026-06-17 10:54:50.007] [DEBUG] QUERY OK db=11.3ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "13", "android_version", 39236, ~N[2026-06-17 10:54:49], ~N[2026-06-17 10:54:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305854, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:49], updated_at: ~N[2026-06-17 10:54:49]}} [2026-06-17 10:54:50.008] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:53:59Z", "value" => "747"} [2026-06-17 10:54:50.024] [DEBUG] QUERY OK db=16.2ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "747", "ram_free_mb", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305855, itemkey: "ram_free_mb", value: "747", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.025] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:53:59Z", "value" => "WIFI"} [2026-06-17 10:54:50.058] [DEBUG] QUERY OK db=32.6ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "WIFI", "network_type", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305856, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.058] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:53:59Z", "value" => "true"} [2026-06-17 10:54:50.090] [DEBUG] QUERY OK db=31.5ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "true", "kiosk_active", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305857, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.090] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:53:59Z", "value" => ""} [2026-06-17 10:54:50.122] [DEBUG] QUERY OK db=31.8ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:53:59Z", "sim_operator", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305858, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.123] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"} [2026-06-17 10:54:50.164] [DEBUG] QUERY OK db=40.5ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "UNKNOWN", "sim_number", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305859, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.165] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"} [2026-06-17 10:54:50.186] [DEBUG] QUERY OK db=19.3ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "UNKNOWN", "sim_iccid", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305860, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.187] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"} [2026-06-17 10:54:50.219] [DEBUG] QUERY OK db=32.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "UNKNOWN", "sim_imsi", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305861, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.220] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"} [2026-06-17 10:54:50.244] [DEBUG] QUERY OK db=24.0ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "UNKNOWN", "sim_iccid2", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305862, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.244] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:53:59Z", "value" => "UNKNOWN"} [2026-06-17 10:54:50.258] [DEBUG] QUERY OK db=13.4ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "UNKNOWN", "sim_imsi2", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305863, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.259] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:53:59Z", "value" => "6"} [2026-06-17 10:54:50.271] [DEBUG] QUERY OK db=12.2ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "6", "data_usage_mb", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305864, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.272] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:53:59Z", "value" => "0"} [2026-06-17 10:54:50.295] [DEBUG] QUERY OK db=23.0ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "0", "mobile_data_mb", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305865, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.298] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:53:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:50.331] [DEBUG] QUERY OK db=31.9ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:53:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39236, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305866, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:53:59Z", message: nil, status_log_id: 39236, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.333] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:50.333] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:54:00Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:54:00Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:54:00Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:54:00Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:54:00Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:54:00Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:54:00Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:54:00Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:54:00Z","vendor":"MoreFun"} [2026-06-17 10:54:50.333] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:00Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:00Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:00Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:00Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:00Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:00Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:00Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:00Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:00Z", "vendor" => "MoreFun"} [2026-06-17 10:54:50.334] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 10:54:50.334] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:50.334] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:54:50.334] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.3ms idle=37.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:50.335] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=3.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:54:50.335] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:49]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:50.336] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=0.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:54:50.337] [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-06-17 10:54:50.338] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.4ms idle=0.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-06-17 10:54:50.340] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms idle=1.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:54:50.379] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:54:50.381] [DEBUG] QUERY OK db=0.8ms queue=0.4ms idle=1152.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 ["372916040000000"] [2026-06-17 10:54:50.381] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:54:50.382] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:54:50.383] [DEBUG] QUERY OK source="address" db=0.8ms idle=2.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:54:50.383] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:54:50.384] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:54:50.397] [DEBUG] QUERY OK db=11.7ms idle=2.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", "0acdf1688041277b4481b5325a7ba0e208145c4c6997256037466884607f4029", 1954, 940, ~U[2026-06-17 10:54:50Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:54:50.397] [INFO ] AutoPushService: Created push log 29749 for MF919 params.zip [2026-06-17 10:54:50.398] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1954, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:54:50.398] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:54:50.399] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:54:50.403] [DEBUG] QUERY OK source="config_file_versions" db=4.1ms idle=15.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-06-17 10:54:50.409] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:54:50.427] [DEBUG] QUERY OK db=17.2ms queue=0.1ms idle=13.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", "59b45fcfc2125734fc013a2691c1c14e7d958726550e9b50f6d2157ab5c6592f", 2147, 17947, ~U[2026-06-17 10:54:50Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:54:50.427] [INFO ] AutoPushService: Created push log 29750 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:54:50.427] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2147, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:54:50.428] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:54:50.431] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:54:50.432] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=27.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-06-17 10:54:50.432] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:54:50.434] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:54:50.434] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:54:50.436] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:54:50.436] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:54:50.437] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:54:50.439] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=5.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-06-17 10:54:50.439] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:54:50.439] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:54:50.441] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=5.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:50.512] [DEBUG] QUERY OK source="tms_terminals" db=28.5ms queue=41.2ms idle=3.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:54:50], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:54:50.512] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:50.513] [INFO ] Event published: terminal_updated [2026-06-17 10:54:50.513] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:54:50.513] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:54:50.516] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:54:50.517] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.8ms queue=1.0ms idle=73.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-06-17 10:54:50], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:54:50.521] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms 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 WHERE (t0.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:54:50.525] [DEBUG] QUERY OK source="terminal_group_rules" db=2.4ms queue=0.1ms idle=2.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-06-17 10:54:50.526] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:54:50.571] [DEBUG] QUERY OK source="tms_terminals" db=12.4ms queue=41.1ms idle=6.6ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 10:54:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:50.573] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=46.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-06-17 10:54:50.574] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.4ms 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-06-17 10:54:50.574] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:50.576] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:50.644] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms queue=40.8ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:50.668] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=68.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:54:00Z", ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:50.668] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39237, oid: "organization_id", upload_time: "2026-06-17T10:54:00Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]} [2026-06-17 10:54:50.668] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:00Z", "value" => "online"} [2026-06-17 10:54:50.691] [DEBUG] QUERY OK db=21.6ms queue=1.5ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:54:00Z", "online", "status", 39237, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305867, itemkey: "status", value: "online", timestamp: "2026-06-17T10:54:00Z", message: "Terminal status update", status_log_id: 39237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.692] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:54:50.693] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:00Z", "value" => "42"} [2026-06-17 10:54:50.694] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:54:50.704] [DEBUG] QUERY OK db=10.5ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:54:00Z", "42", "battery", 39237, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305868, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:54:00Z", message: "Battery level", status_log_id: 39237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.707] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:00Z", "value" => "online"} [2026-06-17 10:54:50.737] [DEBUG] QUERY OK db=29.5ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:54:00Z", "online", "network", 39237, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305869, itemkey: "network", value: "online", timestamp: "2026-06-17T10:54:00Z", message: "Network connectivity", status_log_id: 39237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.737] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:54:50.738] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:00Z", "value" => "0"} [2026-06-17 10:54:50.738] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:54:50.762] [DEBUG] QUERY OK db=23.3ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:54:00Z", "0", "cpu", 39237, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305870, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:54:00Z", message: "CPU usage percentage", status_log_id: 39237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.762] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:00Z", "value" => "1.0.0"} [2026-06-17 10:54:50.785] [DEBUG] QUERY OK db=22.5ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:54:00Z", "1.0.0", "parameter_config", 39237, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305871, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T10:54:00Z", message: "Current parameters version", status_log_id: 39237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.786] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:00Z", "value" => "1.0.1"} [2026-06-17 10:54:50.801] [DEBUG] QUERY OK db=14.6ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:54:00Z", "1.0.1", "emv_config", 39237, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305872, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T10:54:00Z", message: "Current EMV config version", status_log_id: 39237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.802] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:00Z", "value" => ""} [2026-06-17 10:54:50.881] [DEBUG] QUERY OK db=35.1ms queue=43.5ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:54:00Z", "keys_config", 39237, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305873, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:54:00Z", message: "Current keys config version", status_log_id: 39237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.881] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:00Z", "value" => ""} [2026-06-17 10:54:50.934] [DEBUG] QUERY OK db=11.2ms queue=41.0ms idle=77.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:54:00Z", "application", 39237, ~N[2026-06-17 10:54:50], ~N[2026-06-17 10:54:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:50.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305874, itemkey: "application", value: nil, timestamp: "2026-06-17T10:54:00Z", message: "Current application version", status_log_id: 39237, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:50], updated_at: ~N[2026-06-17 10:54:50]}} [2026-06-17 10:54:50.935] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=53.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:50.936] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:50]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:54:50.937] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:54:00Z"} [2026-06-17 10:54:50.937] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:00Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 20, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:54:55.871] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:54:55.871] [INFO ] Incoming JSON payload: {"oid":"f0dbb6bc-d23f-4b18-8bee-5a732026a7c4","sn":"98251226730002","uploadTime":"2026-06-17T10:54:05Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"ram_free_mb","value":"747","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:05Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54:05Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:54:55.873] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f0dbb6bc-d23f-4b18-8bee-5a732026a7c4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:05Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:05Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:05Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:05Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:05Z", "value" => "747"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:05Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:05Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:05Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:05Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:05Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:05Z", "vendor" => "morefun"} [2026-06-17 10:54:55.873] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:54:55.873] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:54:55.873] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:54:55.874] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1058.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:54:55.875] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=53.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.`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-06-17 10:54:55.875] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:54:55.877] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.4ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:54:55.936] [DEBUG] QUERY OK source="tms_terminals" db=16.8ms queue=41.1ms idle=2.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:54:55], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:54:55.936] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:54:55.936] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:54:55.936] [INFO ] Event published: terminal_updated [2026-06-17 10:54:55.936] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:54:55.936] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:54:55.938] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=0.8ms idle=59.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-06-17 10:54:55], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:54:55.940] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=2.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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:54:55.941] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms idle=0.8ms 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-06-17 10:54:55.942] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:54:56.000] [DEBUG] QUERY OK source="tms_terminals" db=19.6ms queue=42.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 10:54:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:54:56.000] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:54:56.002] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=59.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:54:56.067] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms queue=41.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:54:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:54:56.086] [DEBUG] QUERY OK db=18.0ms queue=0.2ms idle=66.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f0dbb6bc-d23f-4b18-8bee-5a732026a7c4", "2026-06-17T10:54:05Z", ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:54:56.086] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39238, oid: "f0dbb6bc-d23f-4b18-8bee-5a732026a7c4", upload_time: "2026-06-17T10:54:05Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]} [2026-06-17 10:54:56.086] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:05Z", "value" => "morefun"} [2026-06-17 10:54:56.152] [DEBUG] QUERY OK db=23.1ms queue=42.4ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "morefun", "vendor", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305875, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.153] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:05Z", "value" => "kiosk_launcher"} [2026-06-17 10:54:56.219] [DEBUG] QUERY OK db=25.4ms queue=40.6ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "kiosk_launcher", "model", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305876, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.219] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:05Z", "value" => "1.0"} [2026-06-17 10:54:56.232] [DEBUG] QUERY OK db=11.3ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "1.0", "app_version", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305877, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.233] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:05Z", "value" => "13"} [2026-06-17 10:54:56.246] [DEBUG] QUERY OK db=13.2ms queue=0.1ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "13", "android_version", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305878, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.247] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:05Z", "value" => "747"} [2026-06-17 10:54:56.272] [DEBUG] QUERY OK db=24.6ms decode=0.1ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "747", "ram_free_mb", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305879, itemkey: "ram_free_mb", value: "747", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.272] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:05Z", "value" => "WIFI"} [2026-06-17 10:54:56.305] [DEBUG] QUERY OK db=31.5ms queue=1.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "WIFI", "network_type", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305880, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.307] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:05Z", "value" => "true"} [2026-06-17 10:54:56.326] [DEBUG] QUERY OK db=17.3ms queue=1.5ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "true", "kiosk_active", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305881, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.327] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:05Z", "value" => ""} [2026-06-17 10:54:56.338] [DEBUG] QUERY OK db=11.1ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:05Z", "sim_operator", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305882, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.338] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"} [2026-06-17 10:54:56.362] [DEBUG] QUERY OK db=22.7ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "UNKNOWN", "sim_number", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305883, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.362] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"} [2026-06-17 10:54:56.386] [DEBUG] QUERY OK db=23.0ms queue=0.4ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "UNKNOWN", "sim_iccid", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305884, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.386] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"} [2026-06-17 10:54:56.413] [DEBUG] QUERY OK db=26.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "UNKNOWN", "sim_imsi", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305885, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.413] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"} [2026-06-17 10:54:56.425] [DEBUG] QUERY OK db=10.8ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "UNKNOWN", "sim_iccid2", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305886, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.425] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:05Z", "value" => "UNKNOWN"} [2026-06-17 10:54:56.437] [DEBUG] QUERY OK db=11.3ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "UNKNOWN", "sim_imsi2", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305887, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.437] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:05Z", "value" => "6"} [2026-06-17 10:54:56.456] [DEBUG] QUERY OK db=18.8ms queue=0.1ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "6", "data_usage_mb", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305888, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.457] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:05Z", "value" => "0"} [2026-06-17 10:54:56.485] [DEBUG] QUERY OK db=27.9ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "0", "mobile_data_mb", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305889, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.486] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:54:56.516] [DEBUG] QUERY OK db=29.5ms queue=0.1ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39238, ~N[2026-06-17 10:54:56], ~N[2026-06-17 10:54:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:54:56.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305890, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:05Z", message: nil, status_log_id: 39238, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:54:56], updated_at: ~N[2026-06-17 10:54:56]}} [2026-06-17 10:54:56.519] [DEBUG] QUERY OK source="tms_terminals" db=1.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:54:56.520] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:54:56]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:00.299] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:53:50Z"} [2026-06-17 10:55:00.300] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:53:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 16, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:01.855] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:01.855] [INFO ] Incoming JSON payload: {"oid":"7bf2ace1-ae32-4c34-b356-a430bf620e61","sn":"98251226730002","uploadTime":"2026-06-17T10:54:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"ram_free_mb","value":"752","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:01.857] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7bf2ace1-ae32-4c34-b356-a430bf620e61", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:11Z", "value" => "752"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:11Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:11Z", "vendor" => "morefun"} [2026-06-17 10:55:01.866] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:01.870] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:01.870] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:01.873] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=1033.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-06-17 10:55:01.875] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.4ms idle=34.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-06-17 10:55:01.875] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:01.879] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:01.879] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:01.894] [DEBUG] QUERY OK source="tms_terminals" db=14.8ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:55:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:01.894] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:01.902] [DEBUG] QUERY OK source="tms_terminals" db=7.4ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:01.928] [DEBUG] QUERY OK source="tms_terminals" db=25.7ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:01.970] [DEBUG] QUERY OK db=41.5ms idle=26.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "7bf2ace1-ae32-4c34-b356-a430bf620e61", "2026-06-17T10:54:11Z", ~N[2026-06-17 10:55:01], ~N[2026-06-17 10:55:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:01.970] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39239, oid: "7bf2ace1-ae32-4c34-b356-a430bf620e61", upload_time: "2026-06-17T10:54:11Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:01], updated_at: ~N[2026-06-17 10:55:01]} [2026-06-17 10:55:01.971] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:11Z", "value" => "morefun"} [2026-06-17 10:55:01.996] [DEBUG] QUERY OK db=25.5ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "morefun", "vendor", 39239, ~N[2026-06-17 10:55:01], ~N[2026-06-17 10:55:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:01.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305891, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:01], updated_at: ~N[2026-06-17 10:55:01]}} [2026-06-17 10:55:01.997] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:11Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:02.040] [DEBUG] QUERY OK db=38.4ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "kiosk_launcher", "model", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305892, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.041] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:11Z", "value" => "1.0"} [2026-06-17 10:55:02.081] [DEBUG] QUERY OK db=39.8ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "1.0", "app_version", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305893, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.082] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:11Z", "value" => "13"} [2026-06-17 10:55:02.128] [DEBUG] QUERY OK db=42.6ms queue=3.4ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "13", "android_version", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305894, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.128] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:11Z", "value" => "752"} [2026-06-17 10:55:02.176] [DEBUG] QUERY OK db=47.4ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "752", "ram_free_mb", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305895, itemkey: "ram_free_mb", value: "752", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.177] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:11Z", "value" => "WIFI"} [2026-06-17 10:55:02.217] [DEBUG] QUERY OK db=40.1ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "WIFI", "network_type", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305896, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.218] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:11Z", "value" => "true"} [2026-06-17 10:55:02.248] [DEBUG] QUERY OK db=30.1ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "true", "kiosk_active", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305897, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.248] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:11Z", "value" => ""} [2026-06-17 10:55:02.278] [DEBUG] QUERY OK db=29.0ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:11Z", "sim_operator", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305898, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.278] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"} [2026-06-17 10:55:02.323] [DEBUG] QUERY OK db=44.3ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "UNKNOWN", "sim_number", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305899, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.323] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"} [2026-06-17 10:55:02.344] [DEBUG] QUERY OK db=20.7ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "UNKNOWN", "sim_iccid", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305900, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.346] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"} [2026-06-17 10:55:02.395] [DEBUG] QUERY OK db=47.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "UNKNOWN", "sim_imsi", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305901, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.395] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"} [2026-06-17 10:55:02.421] [DEBUG] QUERY OK db=24.5ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "UNKNOWN", "sim_iccid2", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305902, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.421] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:11Z", "value" => "UNKNOWN"} [2026-06-17 10:55:02.462] [DEBUG] QUERY OK db=40.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "UNKNOWN", "sim_imsi2", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305903, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.462] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:11Z", "value" => "6"} [2026-06-17 10:55:02.487] [DEBUG] QUERY OK db=24.4ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "6", "data_usage_mb", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305904, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.487] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:11Z", "value" => "0"} [2026-06-17 10:55:02.522] [DEBUG] QUERY OK db=34.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:11Z", "0", "mobile_data_mb", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305905, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.523] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:02.564] [DEBUG] QUERY OK db=40.1ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39239, ~N[2026-06-17 10:55:02], ~N[2026-06-17 10:55:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:02.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305906, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:11Z", message: nil, status_log_id: 39239, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:02], updated_at: ~N[2026-06-17 10:55:02]}} [2026-06-17 10:55:02.569] [DEBUG] QUERY OK source="tms_terminals" db=4.1ms idle=42.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:02.582] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:01]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:07.857] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:07.857] [INFO ] Incoming JSON payload: {"oid":"278df757-c1c3-46e2-81ec-1c22ee18bb4e","sn":"98251226730002","uploadTime":"2026-06-17T10:54:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"ram_free_mb","value":"739","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54:17Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:07.858] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "278df757-c1c3-46e2-81ec-1c22ee18bb4e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:17Z", "value" => "739"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:17Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:17Z", "vendor" => "morefun"} [2026-06-17 10:55:07.859] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:07.859] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:07.859] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:07.860] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1634.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-06-17 10:55:07.861] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=983.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-06-17 10:55:07.861] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:07.865] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:07.865] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:07.931] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms queue=41.1ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:55:07], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:07.931] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:07.933] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.5ms idle=52.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:07.958] [DEBUG] QUERY OK source="tms_terminals" db=24.4ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:07], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:07.973] [DEBUG] QUERY OK db=14.1ms idle=25.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "278df757-c1c3-46e2-81ec-1c22ee18bb4e", "2026-06-17T10:54:17Z", ~N[2026-06-17 10:55:07], ~N[2026-06-17 10:55:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:07.973] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39240, oid: "278df757-c1c3-46e2-81ec-1c22ee18bb4e", upload_time: "2026-06-17T10:54:17Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:07], updated_at: ~N[2026-06-17 10:55:07]} [2026-06-17 10:55:07.973] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:17Z", "value" => "morefun"} [2026-06-17 10:55:07.989] [DEBUG] QUERY OK db=15.5ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "morefun", "vendor", 39240, ~N[2026-06-17 10:55:07], ~N[2026-06-17 10:55:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:07.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305907, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:07], updated_at: ~N[2026-06-17 10:55:07]}} [2026-06-17 10:55:07.989] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:17Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:08.033] [DEBUG] QUERY OK db=42.8ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "kiosk_launcher", "model", 39240, ~N[2026-06-17 10:55:07], ~N[2026-06-17 10:55:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305908, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:07], updated_at: ~N[2026-06-17 10:55:07]}} [2026-06-17 10:55:08.033] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:17Z", "value" => "1.0"} [2026-06-17 10:55:08.055] [DEBUG] QUERY OK db=21.7ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "1.0", "app_version", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305909, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.056] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:17Z", "value" => "13"} [2026-06-17 10:55:08.084] [DEBUG] QUERY OK db=27.7ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "13", "android_version", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305910, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.084] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:17Z", "value" => "739"} [2026-06-17 10:55:08.126] [DEBUG] QUERY OK db=41.9ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "739", "ram_free_mb", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305911, itemkey: "ram_free_mb", value: "739", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.127] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:17Z", "value" => "WIFI"} [2026-06-17 10:55:08.154] [DEBUG] QUERY OK db=26.6ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "WIFI", "network_type", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305912, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.154] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:17Z", "value" => "true"} [2026-06-17 10:55:08.215] [DEBUG] QUERY OK db=59.9ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "true", "kiosk_active", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305913, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.215] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:17Z", "value" => ""} [2026-06-17 10:55:08.229] [DEBUG] QUERY OK db=13.5ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:17Z", "sim_operator", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305914, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.229] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"} [2026-06-17 10:55:08.259] [DEBUG] QUERY OK db=29.8ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "UNKNOWN", "sim_number", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305915, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.260] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"} [2026-06-17 10:55:08.285] [DEBUG] QUERY OK db=25.1ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "UNKNOWN", "sim_iccid", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305916, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.286] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"} [2026-06-17 10:55:08.309] [DEBUG] QUERY OK db=22.7ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "UNKNOWN", "sim_imsi", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305917, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.309] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"} [2026-06-17 10:55:08.324] [DEBUG] QUERY OK db=14.2ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "UNKNOWN", "sim_iccid2", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305918, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.324] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:17Z", "value" => "UNKNOWN"} [2026-06-17 10:55:08.353] [DEBUG] QUERY OK db=27.6ms queue=0.4ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "UNKNOWN", "sim_imsi2", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305919, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.354] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:17Z", "value" => "6"} [2026-06-17 10:55:08.378] [DEBUG] QUERY OK db=23.4ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "6", "data_usage_mb", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305920, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.379] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:17Z", "value" => "0"} [2026-06-17 10:55:08.403] [DEBUG] QUERY OK db=24.4ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "0", "mobile_data_mb", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305921, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.405] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:08.420] [DEBUG] QUERY OK db=14.2ms queue=0.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39240, ~N[2026-06-17 10:55:08], ~N[2026-06-17 10:55:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:08.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305922, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:17Z", message: nil, status_log_id: 39240, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:08], updated_at: ~N[2026-06-17 10:55:08]}} [2026-06-17 10:55:08.422] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:08.423] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:07]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:10.750] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:10.750] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:54:20Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:54:20Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:54:20Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:54:20Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:54:20Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:54:20Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:54:20Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:54:20Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:54:20Z","vendor":"MoreFun"} [2026-06-17 10:55:10.750] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:20Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:20Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:20Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:20Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:20Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:20Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:20Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:20Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:20Z", "vendor" => "MoreFun"} [2026-06-17 10:55:10.750] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 10:55:10.750] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:10.750] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:55:10.754] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=866.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-06-17 10:55:10.756] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=518.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:55:10.757] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms 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-06-17 10:55:10.759] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.4ms idle=2.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-06-17 10:55:10.761] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms idle=2.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:55:10.802] [DEBUG] QUERY OK source="pos_merchant" db=40.5ms queue=0.1ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:55:10.803] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=568.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 ["372916040000000"] [2026-06-17 10:55:10.803] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:55:10.804] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:55:10.805] [DEBUG] QUERY OK source="address" db=0.7ms idle=2.6ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:55:10.805] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:55:10.806] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:55:10.829] [DEBUG] QUERY OK db=20.8ms idle=3.7ms 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", "7941c015b324f5cfdd58b0a0a7878dd0e0472a4a640e7cf252c966b59a87e734", 2018, 940, ~U[2026-06-17 10:55:10Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:55:10], ~N[2026-06-17 10:55:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:55:10.829] [INFO ] AutoPushService: Created push log 29751 for MF919 params.zip [2026-06-17 10:55:10.829] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2018, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:55:10.829] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:55:10.829] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:55:10.833] [DEBUG] QUERY OK source="config_file_versions" db=3.4ms idle=24.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-06-17 10:55:10.836] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:55:10.861] [DEBUG] QUERY OK db=24.4ms idle=7.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", "57ce8873a212ff0b441604f4974f763805c01ef0acd2aae2d0eb75a8185cb473", 2114, 17947, ~U[2026-06-17 10:55:10Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:55:10], ~N[2026-06-17 10:55:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:55:10.861] [INFO ] AutoPushService: Created push log 29752 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:55:10.861] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2114, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:55:10.862] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:55:10.862] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:55:10.863] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=29.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-06-17 10:55:10.863] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:55:10.864] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:55:10.864] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:55:10.865] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:55:10.865] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:55:10.866] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:55:10.868] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms queue=0.1ms 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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 10:55:10.870] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:55:10.870] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:55:10.872] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:10.931] [DEBUG] QUERY OK source="tms_terminals" db=17.2ms queue=42.1ms idle=4.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:55:10], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:55:10.931] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:10.932] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:55:10.932] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:55:10.932] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:55:10.932] [INFO ] Event published: terminal_updated [2026-06-17 10:55:10.933] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=45.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-06-17 10:55:10], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:55:10.934] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:55:10.934] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms 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-06-17 10:55:10.935] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:55:10.991] [DEBUG] QUERY OK source="tms_terminals" db=15.9ms queue=42.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 10:55:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:10.992] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=57.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-06-17 10:55:10.993] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms 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-06-17 10:55:10.993] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:10.994] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:11.059] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms queue=40.9ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:11.084] [DEBUG] QUERY OK db=24.4ms idle=64.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:54:20Z", ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:11.084] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39241, oid: "organization_id", upload_time: "2026-06-17T10:54:20Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]} [2026-06-17 10:55:11.084] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:20Z", "value" => "online"} [2026-06-17 10:55:11.144] [DEBUG] QUERY OK db=59.6ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:54:20Z", "online", "status", 39241, ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:11.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305923, itemkey: "status", value: "online", timestamp: "2026-06-17T10:54:20Z", message: "Terminal status update", status_log_id: 39241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]}} [2026-06-17 10:55:11.144] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:55:11.145] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:20Z", "value" => "42"} [2026-06-17 10:55:11.145] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:55:11.163] [DEBUG] QUERY OK db=18.1ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:54:20Z", "42", "battery", 39241, ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:11.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305924, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:54:20Z", message: "Battery level", status_log_id: 39241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]}} [2026-06-17 10:55:11.164] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:20Z", "value" => "online"} [2026-06-17 10:55:11.206] [DEBUG] QUERY OK db=41.6ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:54:20Z", "online", "network", 39241, ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:11.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305925, itemkey: "network", value: "online", timestamp: "2026-06-17T10:54:20Z", message: "Network connectivity", status_log_id: 39241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]}} [2026-06-17 10:55:11.206] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:55:11.207] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:55:11.207] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:20Z", "value" => "0"} [2026-06-17 10:55:11.231] [DEBUG] QUERY OK db=24.2ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:54:20Z", "0", "cpu", 39241, ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:11.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305926, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:54:20Z", message: "CPU usage percentage", status_log_id: 39241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]}} [2026-06-17 10:55:11.232] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:20Z", "value" => "1.0.0"} [2026-06-17 10:55:11.264] [DEBUG] QUERY OK db=30.5ms queue=0.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:54:20Z", "1.0.0", "parameter_config", 39241, ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:11.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305927, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T10:54:20Z", message: "Current parameters version", status_log_id: 39241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]}} [2026-06-17 10:55:11.264] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:20Z", "value" => "1.0.1"} [2026-06-17 10:55:11.291] [DEBUG] QUERY OK db=26.1ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:54:20Z", "1.0.1", "emv_config", 39241, ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:11.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305928, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T10:54:20Z", message: "Current EMV config version", status_log_id: 39241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]}} [2026-06-17 10:55:11.291] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:20Z", "value" => ""} [2026-06-17 10:55:11.346] [DEBUG] QUERY OK db=12.3ms queue=42.7ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:54:20Z", "keys_config", 39241, ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:11.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305929, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:54:20Z", message: "Current keys config version", status_log_id: 39241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]}} [2026-06-17 10:55:11.347] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:20Z", "value" => ""} [2026-06-17 10:55:11.417] [DEBUG] QUERY OK db=28.2ms queue=41.6ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:54:20Z", "application", 39241, ~N[2026-06-17 10:55:11], ~N[2026-06-17 10:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:11.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305930, itemkey: "application", value: nil, timestamp: "2026-06-17T10:54:20Z", message: "Current application version", status_log_id: 39241, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:11], updated_at: ~N[2026-06-17 10:55:11]}} [2026-06-17 10:55:11.417] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:54:00Z"} [2026-06-17 10:55:11.418] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:00Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 21, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:11.420] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.6ms idle=71.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:11.421] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:10]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:14.234] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:14.236] [INFO ] Incoming JSON payload: {"oid":"5aba094b-7d51-40de-862c-6095759019cc","sn":"98251226730002","uploadTime":"2026-06-17T10:54:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"ram_free_mb","value":"754","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54:23Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:14.237] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5aba094b-7d51-40de-862c-6095759019cc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:23Z", "value" => "754"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:23Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:23Z", "vendor" => "morefun"} [2026-06-17 10:55:14.237] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:14.237] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:14.237] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:14.246] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms queue=6.3ms idle=402.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-06-17 10:55:14.249] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=342.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-06-17 10:55:14.249] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:14.251] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:14.272] [DEBUG] QUERY OK source="tms_terminals" db=20.9ms idle=1.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:55:14], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:55:14.272] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:14.273] [INFO ] Event published: terminal_updated [2026-06-17 10:55:14.274] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=22.6ms 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-06-17 10:55:14], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:55:14.273] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:55:14.278] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:55:14.278] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:55:14.284] [DEBUG] QUERY OK source="tms_terminals" db=7.9ms queue=0.1ms idle=3.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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:55:14.287] [DEBUG] QUERY OK source="terminal_group_rules" db=2.9ms idle=0.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-06-17 10:55:14.287] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:55:14.331] [DEBUG] QUERY OK source="tms_terminals" db=14.8ms queue=40.7ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 10:55:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:14.332] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:14.334] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=45.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:14.399] [DEBUG] QUERY OK source="tms_terminals" db=23.0ms queue=41.1ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:14.430] [DEBUG] QUERY OK db=30.9ms idle=65.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5aba094b-7d51-40de-862c-6095759019cc", "2026-06-17T10:54:23Z", ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:14.431] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39242, oid: "5aba094b-7d51-40de-862c-6095759019cc", upload_time: "2026-06-17T10:54:23Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]} [2026-06-17 10:55:14.431] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:23Z", "value" => "morefun"} [2026-06-17 10:55:14.489] [DEBUG] QUERY OK db=11.6ms queue=41.0ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "morefun", "vendor", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305931, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.490] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:23Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:14.557] [DEBUG] QUERY OK db=26.1ms queue=40.5ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "kiosk_launcher", "model", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305932, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.557] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:23Z", "value" => "1.0"} [2026-06-17 10:55:14.590] [DEBUG] QUERY OK db=31.9ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "1.0", "app_version", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305933, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.590] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:23Z", "value" => "13"} [2026-06-17 10:55:14.603] [DEBUG] QUERY OK db=12.6ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "13", "android_version", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305934, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.604] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:23Z", "value" => "754"} [2026-06-17 10:55:14.619] [DEBUG] QUERY OK db=11.3ms queue=0.3ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "754", "ram_free_mb", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305935, itemkey: "ram_free_mb", value: "754", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.621] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:23Z", "value" => "WIFI"} [2026-06-17 10:55:14.650] [DEBUG] QUERY OK db=29.1ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "WIFI", "network_type", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305936, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.651] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:23Z", "value" => "true"} [2026-06-17 10:55:14.683] [DEBUG] QUERY OK db=32.4ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "true", "kiosk_active", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305937, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.684] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:23Z", "value" => ""} [2026-06-17 10:55:14.696] [DEBUG] QUERY OK db=11.8ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:23Z", "sim_operator", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305938, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.697] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"} [2026-06-17 10:55:14.710] [DEBUG] QUERY OK db=13.2ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "UNKNOWN", "sim_number", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305939, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.711] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"} [2026-06-17 10:55:14.729] [DEBUG] QUERY OK db=17.5ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "UNKNOWN", "sim_iccid", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305940, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.729] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"} [2026-06-17 10:55:14.758] [DEBUG] QUERY OK db=28.1ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "UNKNOWN", "sim_imsi", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305941, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.758] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"} [2026-06-17 10:55:14.784] [DEBUG] QUERY OK db=24.8ms queue=0.1ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "UNKNOWN", "sim_iccid2", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305942, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.785] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:23Z", "value" => "UNKNOWN"} [2026-06-17 10:55:14.801] [DEBUG] QUERY OK db=15.4ms queue=0.1ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "UNKNOWN", "sim_imsi2", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305943, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.801] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:23Z", "value" => "6"} [2026-06-17 10:55:14.821] [DEBUG] QUERY OK db=19.3ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "6", "data_usage_mb", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305944, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.822] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:23Z", "value" => "0"} [2026-06-17 10:55:14.846] [DEBUG] QUERY OK db=24.1ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "0", "mobile_data_mb", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305945, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.850] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:14.877] [DEBUG] QUERY OK db=26.4ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39242, ~N[2026-06-17 10:55:14], ~N[2026-06-17 10:55:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:14.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305946, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:23Z", message: nil, status_log_id: 39242, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:14], updated_at: ~N[2026-06-17 10:55:14]}} [2026-06-17 10:55:14.882] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.3ms idle=32.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:14.882] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:14]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:16.804] [INFO ] Running offline device check... [2026-06-17 10:55:16.804] [INFO ] Starting offline device check... [2026-06-17 10:55:16.807] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.2ms idle=883.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:679 [2026-06-17 10:55:16.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.5ms queue=1.0ms idle=570.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:694 [2026-06-17 10:55:16.823] [INFO ] Starting scheduled rule validation [2026-06-17 10:55:16.823] [DEBUG] Validating missing assignments [2026-06-17 10:55:16.840] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.7ms queue=1.4ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.842] [DEBUG] QUERY OK source="terminal_group_rules" db=16.2ms queue=0.1ms idle=5.0ms 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-06-17 10:55:16.847] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms queue=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.845] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=1.2ms idle=0.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-06-17 10:55:16.851] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=1.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.854] [DEBUG] Re-applied 0 rules during validation [2026-06-17 10:55:16.855] [DEBUG] Validating invalid assignments [2026-06-17 10:55:16.855] [DEBUG] Validating rule consistency [2026-06-17 10:55:16.855] [DEBUG] Updating group terminal counts [2026-06-17 10:55:16.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms queue=0.1ms 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:694 [2026-06-17 10:55:16.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.863] [DEBUG] QUERY OK source="terminal_groups" db=1.8ms queue=6.5ms idle=4.0ms 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-06-17 10:55:16.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.871] [DEBUG] QUERY OK source="terminal_groups" db=2.4ms queue=2.5ms idle=2.9ms 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-06-17 10:55:16.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.882] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.884] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=1.9ms idle=8.0ms 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-06-17 10:55:16.884] [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:694 [2026-06-17 10:55:16.886] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=2.0ms 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-06-17 10:55:16.891] [DEBUG] QUERY OK source="terminal_group_rules" db=1.1ms queue=3.3ms 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-06-17 10:55:16.899] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.2ms queue=2.0ms idle=2.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-06-17 10:55:16.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.899] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.2ms 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-06-17 10:55:16.906] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=5.4ms idle=0.1ms 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-06-17 10:55:16.906] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 10:55:16.907] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 10:55:16.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.4ms queue=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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.920] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=12.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:694 [2026-06-17 10:55:16.924] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms queue=0.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.949] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=18.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:694 [2026-06-17 10:55:16.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.988] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.3ms queue=2.2ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:16.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=27.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:694 [2026-06-17 10:55:16.993] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms 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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.009] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=15.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:694 [2026-06-17 10:55:17.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.017] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.027] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.6ms queue=4.8ms 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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.054] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.2ms idle=21.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:694 [2026-06-17 10:55:17.057] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.069] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms queue=0.9ms idle=11.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:694 [2026-06-17 10:55:17.076] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms queue=3.4ms idle=12.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:694 [2026-06-17 10:55:17.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.094] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=7.0ms 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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 10:55:17.103] [INFO ] Offline device check completed. Found 35 offline devices, updated 0 statuses. [2026-06-17 10:55:17.104] [INFO ] Offline device check completed successfully [2026-06-17 10:55:20.314] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:20.314] [INFO ] Incoming JSON payload: {"oid":"0aea8054-9f62-4b9a-ae40-1e91da9363dc","sn":"98251226730002","uploadTime":"2026-06-17T10:54:30Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"ram_free_mb","value":"741","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:30Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54:30Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:20.315] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0aea8054-9f62-4b9a-ae40-1e91da9363dc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:30Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:30Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:30Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:30Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:30Z", "value" => "741"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:30Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:30Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:30Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:30Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:30Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:30Z", "vendor" => "morefun"} [2026-06-17 10:55:20.315] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:20.315] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:20.316] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:20.316] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=373.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-06-17 10:55:20.319] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=81.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-06-17 10:55:20.320] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:20.326] [DEBUG] QUERY OK source="tms_terminals" db=6.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:20.328] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:20.382] [DEBUG] QUERY OK source="tms_terminals" db=11.2ms queue=42.1ms idle=8.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:55:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:20.382] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:20.384] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.3ms idle=56.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:20.402] [DEBUG] QUERY OK source="tms_terminals" db=17.3ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:20.426] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=18.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0aea8054-9f62-4b9a-ae40-1e91da9363dc", "2026-06-17T10:54:30Z", ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:20.427] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39243, oid: "0aea8054-9f62-4b9a-ae40-1e91da9363dc", upload_time: "2026-06-17T10:54:30Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]} [2026-06-17 10:55:20.427] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:30Z", "value" => "morefun"} [2026-06-17 10:55:20.450] [DEBUG] QUERY OK db=22.9ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "morefun", "vendor", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305947, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.450] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:30Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:20.468] [DEBUG] QUERY OK db=17.3ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "kiosk_launcher", "model", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305948, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.469] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:30Z", "value" => "1.0"} [2026-06-17 10:55:20.485] [DEBUG] QUERY OK db=14.9ms queue=1.1ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "1.0", "app_version", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305949, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.486] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:30Z", "value" => "13"} [2026-06-17 10:55:20.506] [DEBUG] QUERY OK db=19.9ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "13", "android_version", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305950, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.507] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:30Z", "value" => "741"} [2026-06-17 10:55:20.541] [DEBUG] QUERY OK db=33.1ms queue=0.7ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "741", "ram_free_mb", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305951, itemkey: "ram_free_mb", value: "741", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.541] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:30Z", "value" => "WIFI"} [2026-06-17 10:55:20.562] [DEBUG] QUERY OK db=19.3ms queue=0.6ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "WIFI", "network_type", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305952, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.562] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:30Z", "value" => "true"} [2026-06-17 10:55:20.574] [DEBUG] QUERY OK db=11.7ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "true", "kiosk_active", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305953, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.574] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:30Z", "value" => ""} [2026-06-17 10:55:20.592] [DEBUG] QUERY OK db=17.3ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:30Z", "sim_operator", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305954, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.593] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"} [2026-06-17 10:55:20.622] [DEBUG] QUERY OK db=29.4ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "UNKNOWN", "sim_number", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305955, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.623] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"} [2026-06-17 10:55:20.646] [DEBUG] QUERY OK db=22.5ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "UNKNOWN", "sim_iccid", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305956, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.646] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"} [2026-06-17 10:55:20.664] [DEBUG] QUERY OK db=17.0ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "UNKNOWN", "sim_imsi", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305957, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.664] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"} [2026-06-17 10:55:20.680] [DEBUG] QUERY OK db=13.9ms queue=1.4ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "UNKNOWN", "sim_iccid2", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305958, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.680] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:30Z", "value" => "UNKNOWN"} [2026-06-17 10:55:20.697] [DEBUG] QUERY OK db=16.3ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "UNKNOWN", "sim_imsi2", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305959, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.697] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:30Z", "value" => "6"} [2026-06-17 10:55:20.732] [DEBUG] QUERY OK db=33.7ms queue=0.1ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "6", "data_usage_mb", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305960, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.733] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:30Z", "value" => "0"} [2026-06-17 10:55:20.752] [DEBUG] QUERY OK db=19.5ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "0", "mobile_data_mb", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305961, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.754] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:20.774] [DEBUG] QUERY OK db=18.8ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39243, ~N[2026-06-17 10:55:20], ~N[2026-06-17 10:55:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:20.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305962, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:30Z", message: nil, status_log_id: 39243, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:20], updated_at: ~N[2026-06-17 10:55:20]}} [2026-06-17 10:55:20.778] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.2ms idle=24.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:20.781] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:26.800] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:26.801] [INFO ] Incoming JSON payload: {"oid":"a5a27898-0c6f-4791-a622-1fd1bceb3e28","sn":"98251226730002","uploadTime":"2026-06-17T10:54:36Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"ram_free_mb","value":"741","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:36Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54:36Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:26.802] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a5a27898-0c6f-4791-a622-1fd1bceb3e28", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:36Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:36Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:36Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:36Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:36Z", "value" => "741"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:36Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:36Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:36Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:36Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:36Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:36Z", "vendor" => "morefun"} [2026-06-17 10:55:26.802] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:26.802] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:26.802] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:26.805] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=839.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-06-17 10:55:26.807] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=570.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-06-17 10:55:26.807] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:26.811] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.7ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:26.811] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:26.825] [DEBUG] QUERY OK source="tms_terminals" db=14.0ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:55:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:26.825] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:26.827] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:26.851] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:26.878] [DEBUG] QUERY OK db=26.1ms idle=25.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a5a27898-0c6f-4791-a622-1fd1bceb3e28", "2026-06-17T10:54:36Z", ~N[2026-06-17 10:55:26], ~N[2026-06-17 10:55:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:26.878] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39244, oid: "a5a27898-0c6f-4791-a622-1fd1bceb3e28", upload_time: "2026-06-17T10:54:36Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:26], updated_at: ~N[2026-06-17 10:55:26]} [2026-06-17 10:55:26.880] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:36Z", "value" => "morefun"} [2026-06-17 10:55:26.914] [DEBUG] QUERY OK db=34.2ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "morefun", "vendor", 39244, ~N[2026-06-17 10:55:26], ~N[2026-06-17 10:55:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:26.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305963, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:26], updated_at: ~N[2026-06-17 10:55:26]}} [2026-06-17 10:55:26.915] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:36Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:26.934] [DEBUG] QUERY OK db=19.0ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "kiosk_launcher", "model", 39244, ~N[2026-06-17 10:55:26], ~N[2026-06-17 10:55:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:26.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305964, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:26], updated_at: ~N[2026-06-17 10:55:26]}} [2026-06-17 10:55:26.935] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:36Z", "value" => "1.0"} [2026-06-17 10:55:26.966] [DEBUG] QUERY OK db=28.1ms queue=3.2ms idle=10.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "1.0", "app_version", 39244, ~N[2026-06-17 10:55:26], ~N[2026-06-17 10:55:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:26.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305965, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:26], updated_at: ~N[2026-06-17 10:55:26]}} [2026-06-17 10:55:26.967] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:36Z", "value" => "13"} [2026-06-17 10:55:27.000] [DEBUG] QUERY OK db=32.4ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "13", "android_version", 39244, ~N[2026-06-17 10:55:26], ~N[2026-06-17 10:55:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305966, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:26], updated_at: ~N[2026-06-17 10:55:26]}} [2026-06-17 10:55:27.000] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:36Z", "value" => "741"} [2026-06-17 10:55:27.018] [DEBUG] QUERY OK db=15.8ms queue=2.0ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "741", "ram_free_mb", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305967, itemkey: "ram_free_mb", value: "741", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.019] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:36Z", "value" => "WIFI"} [2026-06-17 10:55:27.041] [DEBUG] QUERY OK db=22.2ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "WIFI", "network_type", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305968, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.042] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:36Z", "value" => "true"} [2026-06-17 10:55:27.066] [DEBUG] QUERY OK db=23.3ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "true", "kiosk_active", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305969, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.066] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:36Z", "value" => ""} [2026-06-17 10:55:27.100] [DEBUG] QUERY OK db=33.4ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:36Z", "sim_operator", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305970, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.101] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"} [2026-06-17 10:55:27.198] [DEBUG] QUERY OK db=97.3ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "UNKNOWN", "sim_number", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305971, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.199] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"} [2026-06-17 10:55:27.246] [DEBUG] QUERY OK db=46.8ms idle=98.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "UNKNOWN", "sim_iccid", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305972, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.246] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"} [2026-06-17 10:55:27.264] [DEBUG] QUERY OK db=16.9ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "UNKNOWN", "sim_imsi", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305973, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.264] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"} [2026-06-17 10:55:27.280] [DEBUG] QUERY OK db=15.5ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "UNKNOWN", "sim_iccid2", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305974, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.281] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:36Z", "value" => "UNKNOWN"} [2026-06-17 10:55:27.307] [DEBUG] QUERY OK db=25.7ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "UNKNOWN", "sim_imsi2", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305975, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.307] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:36Z", "value" => "6"} [2026-06-17 10:55:27.342] [DEBUG] QUERY OK db=33.9ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "6", "data_usage_mb", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305976, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.342] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:36Z", "value" => "0"} [2026-06-17 10:55:27.359] [DEBUG] QUERY OK db=16.7ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "0", "mobile_data_mb", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305977, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.360] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:27.373] [DEBUG] QUERY OK db=12.0ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39244, ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:27.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305978, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:36Z", message: nil, status_log_id: 39244, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:27], updated_at: ~N[2026-06-17 10:55:27]}} [2026-06-17 10:55:27.381] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=20.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:27.383] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:26]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:27.690] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:27.691] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:54:37Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:54:37Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:54:37Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:54:37Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:54:37Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:54:37Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:54:37Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:54:37Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:54:37Z","vendor":"MoreFun"} [2026-06-17 10:55:27.691] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:37Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:37Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:37Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:37Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:37Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:37Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:37Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:37Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:37Z", "vendor" => "MoreFun"} [2026-06-17 10:55:27.691] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 10:55:27.691] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:27.691] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:55:27.698] [DEBUG] QUERY OK source="parameter_templates" db=6.8ms idle=319.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-06-17 10:55:27.700] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=317.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:55:27.702] [DEBUG] QUERY OK source="parameter_template_values" db=2.0ms 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-06-17 10:55:27.704] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=0.4ms idle=2.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-06-17 10:55:27.707] [DEBUG] QUERY OK source="pos_terminal" db=2.1ms idle=2.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:55:27.745] [DEBUG] QUERY OK source="pos_merchant" db=38.4ms idle=2.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:55:27.748] [DEBUG] QUERY OK db=0.9ms queue=0.9ms idle=1499.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 ["372916040000000"] [2026-06-17 10:55:27.748] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:55:27.750] [DEBUG] QUERY OK source="pos_terminal_data" db=1.7ms idle=41.1ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:55:27.753] [DEBUG] QUERY OK source="address" db=0.3ms idle=4.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:55:27.753] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:55:27.754] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:55:27.793] [DEBUG] QUERY OK db=37.5ms idle=5.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", "953895a6a0d7e2805e97cd2dc84b49bd886b8d8413d2272bb1fa50e0b2be82f3", 3365, 940, ~U[2026-06-17 10:55:27Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:55:27.793] [INFO ] AutoPushService: Created push log 29753 for MF919 params.zip [2026-06-17 10:55:27.794] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 3365, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:55:27.794] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:55:27.794] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:55:27.795] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=44.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-06-17 10:55:27.802] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:55:27.815] [DEBUG] QUERY OK db=12.0ms idle=9.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", "0ccfa1d74dbbd578450a438bdc09ed3d7c8398fad3151a1e4e88449dfe79162a", 2498, 17947, ~U[2026-06-17 10:55:27Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:55:27], ~N[2026-06-17 10:55:27]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:55:27.815] [INFO ] AutoPushService: Created push log 29754 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:55:27.815] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2498, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:55:27.815] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:55:27.815] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:55:27.817] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=20.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-06-17 10:55:27.817] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:55:27.818] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:55:27.818] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:55:27.821] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:55:27.821] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:55:27.821] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:55:27.822] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-06-17 10:55:27.824] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:55:27.824] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:55:27.825] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=6.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:27.879] [DEBUG] QUERY OK source="tms_terminals" db=11.9ms queue=41.6ms idle=3.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:55:27], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:55:27.880] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:27.880] [INFO ] Event published: terminal_updated [2026-06-17 10:55:27.880] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:55:27.880] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:55:27.880] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:55:27.881] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=0.1ms idle=54.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-06-17 10:55:27], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:55:27.882] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=1.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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:55:27.882] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms 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-06-17 10:55:27.882] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:55:27.946] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms queue=41.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 10:55:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:27.947] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=0.1ms idle=63.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-06-17 10:55:27.948] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-06-17 10:55:27.948] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:27.949] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:28.007] [DEBUG] QUERY OK source="tms_terminals" db=13.6ms queue=43.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:28.022] [DEBUG] QUERY OK db=13.8ms queue=0.9ms idle=33.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:54:37Z", ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:28.022] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39245, oid: "organization_id", upload_time: "2026-06-17T10:54:37Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]} [2026-06-17 10:55:28.022] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:37Z", "value" => "online"} [2026-06-17 10:55:28.044] [DEBUG] QUERY OK db=21.8ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:54:37Z", "online", "status", 39245, ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:28.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305979, itemkey: "status", value: "online", timestamp: "2026-06-17T10:54:37Z", message: "Terminal status update", status_log_id: 39245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]}} [2026-06-17 10:55:28.045] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:55:28.045] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:37Z", "value" => "42"} [2026-06-17 10:55:28.045] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:55:28.068] [DEBUG] QUERY OK db=22.4ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:54:37Z", "42", "battery", 39245, ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:28.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305980, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:54:37Z", message: "Battery level", status_log_id: 39245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]}} [2026-06-17 10:55:28.068] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:37Z", "value" => "online"} [2026-06-17 10:55:28.091] [DEBUG] QUERY OK db=21.7ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:54:37Z", "online", "network", 39245, ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:28.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305981, itemkey: "network", value: "online", timestamp: "2026-06-17T10:54:37Z", message: "Network connectivity", status_log_id: 39245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]}} [2026-06-17 10:55:28.092] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:55:28.092] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:37Z", "value" => "0"} [2026-06-17 10:55:28.092] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:55:28.104] [DEBUG] QUERY OK db=11.5ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:54:37Z", "0", "cpu", 39245, ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:28.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305982, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:54:37Z", message: "CPU usage percentage", status_log_id: 39245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]}} [2026-06-17 10:55:28.105] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:37Z", "value" => "1.0.0"} [2026-06-17 10:55:28.127] [DEBUG] QUERY OK db=20.6ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:54:37Z", "1.0.0", "parameter_config", 39245, ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:28.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305983, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T10:54:37Z", message: "Current parameters version", status_log_id: 39245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]}} [2026-06-17 10:55:28.127] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:37Z", "value" => "1.0.1"} [2026-06-17 10:55:28.160] [DEBUG] QUERY OK db=32.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:54:37Z", "1.0.1", "emv_config", 39245, ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:28.160] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305984, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T10:54:37Z", message: "Current EMV config version", status_log_id: 39245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]}} [2026-06-17 10:55:28.160] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:37Z", "value" => ""} [2026-06-17 10:55:28.219] [DEBUG] QUERY OK db=14.7ms queue=43.5ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:54:37Z", "keys_config", 39245, ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:28.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305985, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:54:37Z", message: "Current keys config version", status_log_id: 39245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]}} [2026-06-17 10:55:28.219] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:37Z", "value" => ""} [2026-06-17 10:55:28.277] [DEBUG] QUERY OK db=14.5ms queue=42.6ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:54:37Z", "application", 39245, ~N[2026-06-17 10:55:28], ~N[2026-06-17 10:55:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:28.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305986, itemkey: "application", value: nil, timestamp: "2026-06-17T10:54:37Z", message: "Current application version", status_log_id: 39245, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:28], updated_at: ~N[2026-06-17 10:55:28]}} [2026-06-17 10:55:28.277] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:54:38Z"} [2026-06-17 10:55:28.278] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:38Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 32, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:28.282] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms queue=0.7ms idle=59.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:28.287] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:31.047] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:54:21Z"} [2026-06-17 10:55:31.047] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:21Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 26, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:31.222] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:54:21Z"} [2026-06-17 10:55:31.223] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:21Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 27, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:32.945] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:32.946] [INFO ] Incoming JSON payload: {"oid":"1c9fab66-3f9d-4897-b382-c61a162a0abd","sn":"98251226730002","uploadTime":"2026-06-17T10:54:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54:42Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:32.947] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1c9fab66-3f9d-4897-b382-c61a162a0abd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:42Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:42Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:42Z", "vendor" => "morefun"} [2026-06-17 10:55:32.947] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:32.947] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:32.947] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:32.949] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=963.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-06-17 10:55:32.953] [DEBUG] QUERY OK source="parameter_templates" db=3.7ms idle=714.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-06-17 10:55:32.953] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:32.954] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:33.021] [DEBUG] QUERY OK source="tms_terminals" db=25.4ms queue=40.8ms idle=4.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:55:32], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:55:33.021] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:33.021] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:55:33.021] [INFO ] Event published: terminal_updated [2026-06-17 10:55:33.021] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:55:33.022] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:55:33.026] [DEBUG] QUERY OK source="terminal_group_memberships" db=4.1ms queue=0.1ms idle=33.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-06-17 10:55:33], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:55:33.028] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:55:33.029] [DEBUG] QUERY OK source="terminal_group_rules" db=1.5ms 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-06-17 10:55:33.029] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:55:33.114] [DEBUG] QUERY OK source="tms_terminals" db=45.3ms queue=41.3ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 10:55:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:33.114] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:33.117] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=84.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:33.133] [DEBUG] QUERY OK source="tms_terminals" db=15.2ms queue=0.5ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:33.153] [DEBUG] QUERY OK db=19.5ms idle=17.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1c9fab66-3f9d-4897-b382-c61a162a0abd", "2026-06-17T10:54:42Z", ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:33.154] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39246, oid: "1c9fab66-3f9d-4897-b382-c61a162a0abd", upload_time: "2026-06-17T10:54:42Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]} [2026-06-17 10:55:33.154] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:42Z", "value" => "morefun"} [2026-06-17 10:55:33.233] [DEBUG] QUERY OK db=34.8ms queue=41.2ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "morefun", "vendor", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305987, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.234] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:42Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:33.293] [DEBUG] QUERY OK db=16.9ms queue=41.5ms idle=80.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "kiosk_launcher", "model", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305988, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.293] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:42Z", "value" => "1.0"} [2026-06-17 10:55:33.307] [DEBUG] QUERY OK db=14.0ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "1.0", "app_version", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305989, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.308] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:42Z", "value" => "13"} [2026-06-17 10:55:33.332] [DEBUG] QUERY OK db=22.8ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "13", "android_version", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305990, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.333] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:42Z", "value" => "764"} [2026-06-17 10:55:33.363] [DEBUG] QUERY OK db=28.9ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "764", "ram_free_mb", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305991, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.363] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:42Z", "value" => "WIFI"} [2026-06-17 10:55:33.391] [DEBUG] QUERY OK db=27.6ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "WIFI", "network_type", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305992, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.393] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:42Z", "value" => "true"} [2026-06-17 10:55:33.412] [DEBUG] QUERY OK db=19.0ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "true", "kiosk_active", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305993, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.413] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:42Z", "value" => ""} [2026-06-17 10:55:33.438] [DEBUG] QUERY OK db=24.5ms queue=0.1ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:42Z", "sim_operator", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305994, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.438] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"} [2026-06-17 10:55:33.461] [DEBUG] QUERY OK db=22.9ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "UNKNOWN", "sim_number", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305995, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.462] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"} [2026-06-17 10:55:33.486] [DEBUG] QUERY OK db=23.4ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "UNKNOWN", "sim_iccid", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305996, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.486] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"} [2026-06-17 10:55:33.502] [DEBUG] QUERY OK db=15.9ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "UNKNOWN", "sim_imsi", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305997, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.503] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"} [2026-06-17 10:55:33.521] [DEBUG] QUERY OK db=17.7ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "UNKNOWN", "sim_iccid2", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305998, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.522] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:42Z", "value" => "UNKNOWN"} [2026-06-17 10:55:33.556] [DEBUG] QUERY OK db=33.1ms queue=0.1ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "UNKNOWN", "sim_imsi2", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 305999, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.556] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:42Z", "value" => "6"} [2026-06-17 10:55:33.579] [DEBUG] QUERY OK db=22.6ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "6", "data_usage_mb", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306000, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.580] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:42Z", "value" => "0"} [2026-06-17 10:55:33.596] [DEBUG] QUERY OK db=15.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "0", "mobile_data_mb", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306001, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.597] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:33.628] [DEBUG] QUERY OK db=29.7ms queue=0.1ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39246, ~N[2026-06-17 10:55:33], ~N[2026-06-17 10:55:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:33.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306002, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:42Z", message: nil, status_log_id: 39246, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:33], updated_at: ~N[2026-06-17 10:55:33]}} [2026-06-17 10:55:33.632] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=35.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:33.634] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:35.202] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:35.202] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:54:45Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:54:45Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:54:45Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:54:45Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:54:45Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:54:45Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:54:45Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:54:45Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:54:45Z","vendor":"MoreFun"} [2026-06-17 10:55:35.204] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:45Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:45Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:45Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:45Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:45Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:45Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:45Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:45Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:45Z", "vendor" => "MoreFun"} [2026-06-17 10:55:35.204] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 10:55:35.204] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:35.206] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:55:35.209] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=1215.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-06-17 10:55:35.210] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=216.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:55:35.212] [DEBUG] QUERY OK source="parameter_template_values" db=1.4ms idle=1.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-06-17 10:55:35.216] [DEBUG] QUERY OK source="parameter_definitions" db=1.3ms queue=0.5ms idle=3.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-06-17 10:55:35.220] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms idle=7.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:55:35.256] [DEBUG] QUERY OK source="pos_merchant" db=35.8ms idle=4.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:55:35.258] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=1007.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 ["372916040000000"] [2026-06-17 10:55:35.258] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:55:35.259] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=37.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:55:35.260] [DEBUG] QUERY OK source="address" db=0.4ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:55:35.260] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:55:35.263] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:55:35.281] [DEBUG] QUERY OK db=16.4ms 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", "eb51efd6a0d8ddc3770b68f48e295806c1469c0b1bfc3626fda1b17f47d6f7e8", 2626, 940, ~U[2026-06-17 10:55:35Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:55:35.281] [INFO ] AutoPushService: Created push log 29755 for MF919 params.zip [2026-06-17 10:55:35.281] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2626, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:55:35.281] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:55:35.281] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:55:35.282] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=21.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-06-17 10:55:35.296] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:55:35.325] [DEBUG] QUERY OK db=25.8ms idle=18.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", "8c4adcb5a91ddbc454dfb676cb25f615f3dd2f2e5e5967d6d2d0f1af23ca2d44", 2722, 17947, ~U[2026-06-17 10:55:35Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:55:35.325] [INFO ] AutoPushService: Created push log 29756 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:55:35.326] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2722, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:55:35.326] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:55:35.326] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:55:35.327] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=44.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-06-17 10:55:35.327] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:55:35.328] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:55:35.329] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:55:35.332] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:55:35.333] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:55:35.333] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:55:35.336] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms idle=6.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-06-17 10:55:35.337] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:55:35.337] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:55:35.338] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=9.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:35.404] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms queue=40.7ms idle=2.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:55:35], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:55:35.404] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:35.406] [INFO ] Event published: terminal_updated [2026-06-17 10:55:35.406] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:55:35.407] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:55:35.407] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:55:35.408] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=0.2ms idle=68.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-06-17 10:55:35], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:55:35.409] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=0.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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:55:35.411] [DEBUG] QUERY OK source="terminal_group_rules" db=0.8ms 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-06-17 10:55:35.411] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:55:35.475] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms queue=43.7ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 10:55:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:35.476] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=64.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-06-17 10:55:35.477] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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-06-17 10:55:35.477] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:35.479] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:35.539] [DEBUG] QUERY OK source="tms_terminals" db=17.8ms queue=42.1ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:35.556] [DEBUG] QUERY OK db=15.9ms idle=60.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:54:45Z", ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:35.557] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39247, oid: "organization_id", upload_time: "2026-06-17T10:54:45Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]} [2026-06-17 10:55:35.557] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:45Z", "value" => "online"} [2026-06-17 10:55:35.590] [DEBUG] QUERY OK db=30.8ms queue=0.1ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:54:45Z", "online", "status", 39247, ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:35.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306003, itemkey: "status", value: "online", timestamp: "2026-06-17T10:54:45Z", message: "Terminal status update", status_log_id: 39247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]}} [2026-06-17 10:55:35.590] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:55:35.591] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:45Z", "value" => "42"} [2026-06-17 10:55:35.591] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:55:35.615] [DEBUG] QUERY OK db=23.5ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:54:45Z", "42", "battery", 39247, ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:35.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306004, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:54:45Z", message: "Battery level", status_log_id: 39247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]}} [2026-06-17 10:55:35.615] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:45Z", "value" => "online"} [2026-06-17 10:55:35.633] [DEBUG] QUERY OK db=17.0ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:54:45Z", "online", "network", 39247, ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:35.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306005, itemkey: "network", value: "online", timestamp: "2026-06-17T10:54:45Z", message: "Network connectivity", status_log_id: 39247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]}} [2026-06-17 10:55:35.633] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:55:35.633] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:45Z", "value" => "0"} [2026-06-17 10:55:35.633] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:55:35.655] [DEBUG] QUERY OK db=21.7ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:54:45Z", "0", "cpu", 39247, ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:35.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306006, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:54:45Z", message: "CPU usage percentage", status_log_id: 39247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]}} [2026-06-17 10:55:35.655] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:45Z", "value" => "1.0.0"} [2026-06-17 10:55:35.693] [DEBUG] QUERY OK db=37.3ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:54:45Z", "1.0.0", "parameter_config", 39247, ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:35.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306007, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T10:54:45Z", message: "Current parameters version", status_log_id: 39247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]}} [2026-06-17 10:55:35.694] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:45Z", "value" => "1.0.1"} [2026-06-17 10:55:35.723] [DEBUG] QUERY OK db=26.3ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:54:45Z", "1.0.1", "emv_config", 39247, ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:35.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306008, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T10:54:45Z", message: "Current EMV config version", status_log_id: 39247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]}} [2026-06-17 10:55:35.724] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:45Z", "value" => ""} [2026-06-17 10:55:35.779] [DEBUG] QUERY OK db=13.9ms queue=41.4ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:54:45Z", "keys_config", 39247, ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:35.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306009, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:54:45Z", message: "Current keys config version", status_log_id: 39247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]}} [2026-06-17 10:55:35.784] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:45Z", "value" => ""} [2026-06-17 10:55:35.857] [DEBUG] QUERY OK db=23.2ms queue=43.3ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:54:45Z", "application", 39247, ~N[2026-06-17 10:55:35], ~N[2026-06-17 10:55:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:35.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306010, itemkey: "application", value: nil, timestamp: "2026-06-17T10:54:45Z", message: "Current application version", status_log_id: 39247, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:35], updated_at: ~N[2026-06-17 10:55:35]}} [2026-06-17 10:55:35.857] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:54:45Z"} [2026-06-17 10:55:35.860] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.2ms idle=78.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:35.858] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 36, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:35.865] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:35]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:38.717] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:38.717] [INFO ] Incoming JSON payload: {"oid":"b03a78be-6c20-4d4c-b8b4-c1867b11b006","sn":"98251226730002","uploadTime":"2026-06-17T10:54:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"ram_free_mb","value":"761","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54:48Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:38.719] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b03a78be-6c20-4d4c-b8b4-c1867b11b006", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:48Z", "value" => "761"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:48Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:48Z", "vendor" => "morefun"} [2026-06-17 10:55:38.719] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:38.719] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:38.719] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:38.720] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1484.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-06-17 10:55:38.720] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=713.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-06-17 10:55:38.720] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:38.722] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:38.800] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms queue=40.9ms idle=2.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:55:38], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:55:38.800] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:38.801] [INFO ] Event published: terminal_updated [2026-06-17 10:55:38.801] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:55:38.801] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:55:38.801] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:55:38.803] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.6ms idle=78.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-06-17 10:55:38], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:55:38.804] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:55:38.805] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.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-06-17 10:55:38.805] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:55:38.857] [DEBUG] QUERY OK source="tms_terminals" db=12.9ms queue=41.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 10:55:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:38.858] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:38.859] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=53.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:38.927] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms queue=43.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:38.957] [DEBUG] QUERY OK db=29.5ms idle=68.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b03a78be-6c20-4d4c-b8b4-c1867b11b006", "2026-06-17T10:54:48Z", ~N[2026-06-17 10:55:38], ~N[2026-06-17 10:55:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:38.958] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39248, oid: "b03a78be-6c20-4d4c-b8b4-c1867b11b006", upload_time: "2026-06-17T10:54:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:38], updated_at: ~N[2026-06-17 10:55:38]} [2026-06-17 10:55:38.958] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:48Z", "value" => "morefun"} [2026-06-17 10:55:39.013] [DEBUG] QUERY OK db=12.5ms queue=42.4ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "morefun", "vendor", 39248, ~N[2026-06-17 10:55:38], ~N[2026-06-17 10:55:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306011, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:38], updated_at: ~N[2026-06-17 10:55:38]}} [2026-06-17 10:55:39.013] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:48Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:39.080] [DEBUG] QUERY OK db=23.6ms queue=42.5ms idle=3.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "kiosk_launcher", "model", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306012, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.080] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:48Z", "value" => "1.0"} [2026-06-17 10:55:39.116] [DEBUG] QUERY OK db=35.2ms queue=0.1ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "1.0", "app_version", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306013, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.116] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:48Z", "value" => "13"} [2026-06-17 10:55:39.154] [DEBUG] QUERY OK db=36.9ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "13", "android_version", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306014, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.158] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:48Z", "value" => "761"} [2026-06-17 10:55:39.193] [DEBUG] QUERY OK db=34.5ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "761", "ram_free_mb", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306015, itemkey: "ram_free_mb", value: "761", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.196] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:48Z", "value" => "WIFI"} [2026-06-17 10:55:39.235] [DEBUG] QUERY OK db=37.0ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "WIFI", "network_type", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306016, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.235] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:48Z", "value" => "true"} [2026-06-17 10:55:39.269] [DEBUG] QUERY OK db=33.4ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "true", "kiosk_active", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306017, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.270] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:48Z", "value" => ""} [2026-06-17 10:55:39.288] [DEBUG] QUERY OK db=17.6ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:48Z", "sim_operator", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306018, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.288] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"} [2026-06-17 10:55:39.303] [DEBUG] QUERY OK db=14.4ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "UNKNOWN", "sim_number", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306019, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.304] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"} [2026-06-17 10:55:39.321] [DEBUG] QUERY OK db=17.2ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "UNKNOWN", "sim_iccid", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306020, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.322] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"} [2026-06-17 10:55:39.354] [DEBUG] QUERY OK db=32.0ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "UNKNOWN", "sim_imsi", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306021, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.354] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"} [2026-06-17 10:55:39.383] [DEBUG] QUERY OK db=25.5ms queue=2.4ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "UNKNOWN", "sim_iccid2", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306022, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.389] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:48Z", "value" => "UNKNOWN"} [2026-06-17 10:55:39.405] [DEBUG] QUERY OK db=16.5ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "UNKNOWN", "sim_imsi2", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306023, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.406] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:48Z", "value" => "6"} [2026-06-17 10:55:39.422] [DEBUG] QUERY OK db=16.2ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "6", "data_usage_mb", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306024, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.423] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:48Z", "value" => "0"} [2026-06-17 10:55:39.454] [DEBUG] QUERY OK db=30.5ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "0", "mobile_data_mb", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306025, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.458] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:39.486] [DEBUG] QUERY OK db=27.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39248, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306026, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:48Z", message: nil, status_log_id: 39248, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.488] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:39.489] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T10:54:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T10:54:48Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T10:54:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T10:54:48Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T10:54:48Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T10:54:48Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T10:54:48Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T10:54:48Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T10:54:48Z","vendor":"MoreFun"} [2026-06-17 10:55:39.489] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:48Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:48Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:48Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:48Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:48Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:48Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:48Z", "vendor" => "MoreFun"} [2026-06-17 10:55:39.489] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 10:55:39.489] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:39.489] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 10:55:39.490] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=34.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:39.491] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=3.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-06-17 10:55:39.492] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 10:55:39.493] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:38]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:39.494] [DEBUG] QUERY OK source="parameter_template_values" db=1.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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 10:55:39.498] [DEBUG] QUERY OK source="parameter_definitions" db=2.7ms queue=0.6ms idle=3.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-06-17 10:55:39.503] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms queue=0.1ms idle=8.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 10:55:39.539] [DEBUG] QUERY OK source="pos_merchant" db=34.8ms queue=0.1ms idle=5.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 10:55:39.543] [DEBUG] QUERY OK db=0.6ms queue=3.4ms idle=293.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 ["372916040000000"] [2026-06-17 10:55:39.543] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 10:55:39.550] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms queue=5.4ms idle=40.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 10:55:39.551] [DEBUG] QUERY OK source="address" db=0.8ms idle=11.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 10:55:39.551] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 10:55:39.555] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 10:55:39.571] [DEBUG] QUERY OK db=15.1ms idle=5.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", "2df6455771d779ec1dab9bf8fe4bb9f7f50899de150fd9b4bef9eac073531e2a", 2659, 940, ~U[2026-06-17 10:55:39Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 10:55:39.571] [INFO ] AutoPushService: Created push log 29757 for MF919 params.zip [2026-06-17 10:55:39.572] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2659, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 10:55:39.572] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:55:39.572] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 10:55:39.574] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=21.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-06-17 10:55:39.581] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 10:55:39.602] [DEBUG] QUERY OK db=16.7ms queue=0.1ms idle=14.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", "f0b5cd5e4eb69afd1c9f377c4bdbca02fcfe95a0caa41226a93d6434a0e74aa4", 2788, 17947, ~U[2026-06-17 10:55:39Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 10:55:39.603] [INFO ] AutoPushService: Created push log 29758 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 10:55:39.603] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2788, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 10:55:39.603] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 10:55:39.603] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 10:55:39.606] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.3ms idle=30.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-06-17 10:55:39.606] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 10:55:39.607] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=4.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 10:55:39.607] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 10:55:39.613] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 10:55:39.613] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:55:39.613] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 10:55:39.615] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=7.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-06-17 10:55:39.615] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 10:55:39.615] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 10:55:39.618] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:39.687] [DEBUG] QUERY OK source="tms_terminals" db=24.4ms queue=44.1ms idle=3.7ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 10:55:39], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:55:39.687] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:39.687] [INFO ] Event published: terminal_updated [2026-06-17 10:55:39.688] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:55:39.688] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:55:39.688] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:55:39.688] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=0.4ms idle=69.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-06-17 10:55:39], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:55:39.692] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:55:39.696] [DEBUG] QUERY OK source="terminal_group_rules" db=3.3ms 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-06-17 10:55:39.696] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:55:39.748] [DEBUG] QUERY OK source="tms_terminals" db=17.2ms queue=41.6ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 10:55:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:39.750] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=0.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-06-17 10:55:39.755] [DEBUG] QUERY OK source="config_file_versions" db=5.3ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 10:55:39.756] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:39.767] [DEBUG] QUERY OK source="tms_terminals" db=6.9ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:39.835] [DEBUG] QUERY OK source="tms_terminals" db=19.1ms queue=45.6ms idle=15.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:39.871] [DEBUG] QUERY OK db=32.8ms queue=2.5ms idle=72.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T10:54:48Z", ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:39.871] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39249, oid: "organization_id", upload_time: "2026-06-17T10:54:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]} [2026-06-17 10:55:39.872] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T10:54:48Z", "value" => "online"} [2026-06-17 10:55:39.896] [DEBUG] QUERY OK db=24.0ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T10:54:48Z", "online", "status", 39249, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306027, itemkey: "status", value: "online", timestamp: "2026-06-17T10:54:48Z", message: "Terminal status update", status_log_id: 39249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.896] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 10:55:39.897] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:55:39.897] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T10:54:48Z", "value" => "42"} [2026-06-17 10:55:39.920] [DEBUG] QUERY OK db=18.8ms queue=0.1ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T10:54:48Z", "42", "battery", 39249, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306028, itemkey: "battery", value: "42", timestamp: "2026-06-17T10:54:48Z", message: "Battery level", status_log_id: 39249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.920] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T10:54:48Z", "value" => "online"} [2026-06-17 10:55:39.942] [DEBUG] QUERY OK db=20.2ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T10:54:48Z", "online", "network", 39249, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306029, itemkey: "network", value: "online", timestamp: "2026-06-17T10:54:48Z", message: "Network connectivity", status_log_id: 39249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.942] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 10:55:39.943] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T10:54:48Z", "value" => "0"} [2026-06-17 10:55:39.943] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:55:39.972] [DEBUG] QUERY OK db=28.5ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T10:54:48Z", "0", "cpu", 39249, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:39.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306030, itemkey: "cpu", value: "0", timestamp: "2026-06-17T10:54:48Z", message: "CPU usage percentage", status_log_id: 39249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:39.972] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T10:54:48Z", "value" => "1.0.0"} [2026-06-17 10:55:40.007] [DEBUG] QUERY OK db=33.8ms queue=0.1ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T10:54:48Z", "1.0.0", "parameter_config", 39249, ~N[2026-06-17 10:55:39], ~N[2026-06-17 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:40.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306031, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T10:54:48Z", message: "Current parameters version", status_log_id: 39249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:39], updated_at: ~N[2026-06-17 10:55:39]}} [2026-06-17 10:55:40.007] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T10:54:48Z", "value" => "1.0.1"} [2026-06-17 10:55:40.018] [DEBUG] QUERY OK db=10.4ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T10:54:48Z", "1.0.1", "emv_config", 39249, ~N[2026-06-17 10:55:40], ~N[2026-06-17 10:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:40.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306032, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T10:54:48Z", message: "Current EMV config version", status_log_id: 39249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:40], updated_at: ~N[2026-06-17 10:55:40]}} [2026-06-17 10:55:40.018] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T10:54:48Z", "value" => ""} [2026-06-17 10:55:40.081] [DEBUG] QUERY OK db=21.4ms queue=40.7ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T10:54:48Z", "keys_config", 39249, ~N[2026-06-17 10:55:40], ~N[2026-06-17 10:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:40.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306033, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T10:54:48Z", message: "Current keys config version", status_log_id: 39249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:40], updated_at: ~N[2026-06-17 10:55:40]}} [2026-06-17 10:55:40.082] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T10:54:48Z", "value" => ""} [2026-06-17 10:55:40.147] [DEBUG] QUERY OK db=22.7ms queue=41.6ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T10:54:48Z", "application", 39249, ~N[2026-06-17 10:55:40], ~N[2026-06-17 10:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:40.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306034, itemkey: "application", value: nil, timestamp: "2026-06-17T10:54:48Z", message: "Current application version", status_log_id: 39249, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:40], updated_at: ~N[2026-06-17 10:55:40]}} [2026-06-17 10:55:40.148] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T10:54:50Z"} [2026-06-17 10:55:40.148] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 40, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:40.149] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=66.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:40.150] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:39]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:44.647] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:44.647] [INFO ] Incoming JSON payload: {"oid":"27ebd366-92a4-452c-a982-12ca2da9a4c0","sn":"98251226730002","uploadTime":"2026-06-17T10:54:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"ram_free_mb","value":"758","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:54:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:54:54Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:44.648] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "27ebd366-92a4-452c-a982-12ca2da9a4c0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:54Z", "value" => "758"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:54Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:54:54Z", "vendor" => "morefun"} [2026-06-17 10:55:44.648] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:44.648] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:44.649] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:44.651] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=1.0ms idle=770.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:55:44.653] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=0.1ms idle=625.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.`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-06-17 10:55:44.653] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:44.655] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:44.678] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=1.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 10:55:44], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 10:55:44.679] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:44.679] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 10:55:44.679] [INFO ] Event published: terminal_updated [2026-06-17 10:55:44.679] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 10:55:44.679] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 10:55:44.680] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=0.1ms idle=24.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-06-17 10:55:44], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 10:55:44.682] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.4ms idle=2.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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 10:55:44.683] [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-06-17 10:55:44.683] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 10:55:44.777] [DEBUG] QUERY OK source="tms_terminals" db=55.2ms queue=40.7ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 10:55:44], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:44.777] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:44.778] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=94.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:44.793] [DEBUG] QUERY OK source="tms_terminals" db=13.0ms queue=1.0ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:44], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:44.819] [DEBUG] QUERY OK db=25.4ms queue=0.1ms idle=14.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "27ebd366-92a4-452c-a982-12ca2da9a4c0", "2026-06-17T10:54:54Z", ~N[2026-06-17 10:55:44], ~N[2026-06-17 10:55:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:44.819] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39250, oid: "27ebd366-92a4-452c-a982-12ca2da9a4c0", upload_time: "2026-06-17T10:54:54Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:44], updated_at: ~N[2026-06-17 10:55:44]} [2026-06-17 10:55:44.819] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:54:54Z", "value" => "morefun"} [2026-06-17 10:55:44.885] [DEBUG] QUERY OK db=23.7ms queue=42.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "morefun", "vendor", 39250, ~N[2026-06-17 10:55:44], ~N[2026-06-17 10:55:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:44.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306035, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:44], updated_at: ~N[2026-06-17 10:55:44]}} [2026-06-17 10:55:44.887] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:54:54Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:44.954] [DEBUG] QUERY OK db=25.4ms queue=41.4ms idle=68.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "kiosk_launcher", "model", 39250, ~N[2026-06-17 10:55:44], ~N[2026-06-17 10:55:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:44.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306036, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:44], updated_at: ~N[2026-06-17 10:55:44]}} [2026-06-17 10:55:44.955] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:54:54Z", "value" => "1.0"} [2026-06-17 10:55:44.984] [DEBUG] QUERY OK db=26.7ms queue=0.2ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "1.0", "app_version", 39250, ~N[2026-06-17 10:55:44], ~N[2026-06-17 10:55:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:44.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306037, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:44], updated_at: ~N[2026-06-17 10:55:44]}} [2026-06-17 10:55:44.985] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:54:54Z", "value" => "13"} [2026-06-17 10:55:45.008] [DEBUG] QUERY OK db=23.3ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "13", "android_version", 39250, ~N[2026-06-17 10:55:44], ~N[2026-06-17 10:55:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306038, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:44], updated_at: ~N[2026-06-17 10:55:44]}} [2026-06-17 10:55:45.009] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:54:54Z", "value" => "758"} [2026-06-17 10:55:45.042] [DEBUG] QUERY OK db=33.0ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "758", "ram_free_mb", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306039, itemkey: "ram_free_mb", value: "758", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.042] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:54:54Z", "value" => "WIFI"} [2026-06-17 10:55:45.071] [DEBUG] QUERY OK db=28.1ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "WIFI", "network_type", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306040, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.071] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:54:54Z", "value" => "true"} [2026-06-17 10:55:45.102] [DEBUG] QUERY OK db=28.0ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "true", "kiosk_active", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306041, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.102] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:54:54Z", "value" => ""} [2026-06-17 10:55:45.192] [DEBUG] QUERY OK db=89.7ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:54:54Z", "sim_operator", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306042, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.192] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"} [2026-06-17 10:55:45.221] [DEBUG] QUERY OK db=28.1ms idle=91.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "UNKNOWN", "sim_number", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306043, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.221] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"} [2026-06-17 10:55:45.254] [DEBUG] QUERY OK db=32.2ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "UNKNOWN", "sim_iccid", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306044, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.254] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"} [2026-06-17 10:55:45.269] [DEBUG] QUERY OK db=14.6ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "UNKNOWN", "sim_imsi", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306045, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.270] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"} [2026-06-17 10:55:45.288] [DEBUG] QUERY OK db=18.3ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "UNKNOWN", "sim_iccid2", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306046, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.289] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:54:54Z", "value" => "UNKNOWN"} [2026-06-17 10:55:45.324] [DEBUG] QUERY OK db=32.3ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "UNKNOWN", "sim_imsi2", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306047, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.326] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:54:54Z", "value" => "6"} [2026-06-17 10:55:45.353] [DEBUG] QUERY OK db=25.5ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "6", "data_usage_mb", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306048, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.356] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:54:54Z", "value" => "0"} [2026-06-17 10:55:45.383] [DEBUG] QUERY OK db=26.3ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "0", "mobile_data_mb", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306049, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.384] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:54:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:45.405] [DEBUG] QUERY OK db=18.5ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:54:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39250, ~N[2026-06-17 10:55:45], ~N[2026-06-17 10:55:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:45.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306050, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:54:54Z", message: nil, status_log_id: 39250, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:45], updated_at: ~N[2026-06-17 10:55:45]}} [2026-06-17 10:55:45.409] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=25.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:45.410] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:44]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:48.179] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:54:38Z"} [2026-06-17 10:55:48.179] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:38Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 33, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:50.736] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:50.736] [INFO ] Incoming JSON payload: {"oid":"c8af1b9b-43bd-4674-8ef2-d6e887974110","sn":"98251226730002","uploadTime":"2026-06-17T10:55:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"ram_free_mb","value":"756","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55:00Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:50.738] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c8af1b9b-43bd-4674-8ef2-d6e887974110", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:00Z", "value" => "756"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:00Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:00Z", "vendor" => "morefun"} [2026-06-17 10:55:50.738] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:50.738] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:50.738] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:50.739] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1501.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-06-17 10:55:50.742] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=692.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-06-17 10:55:50.742] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:50.743] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:50.744] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:50.809] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms queue=40.9ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:55:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:50.809] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:50.811] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=66.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:50.842] [DEBUG] QUERY OK source="tms_terminals" db=30.5ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:50.857] [DEBUG] QUERY OK db=14.1ms idle=31.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c8af1b9b-43bd-4674-8ef2-d6e887974110", "2026-06-17T10:55:00Z", ~N[2026-06-17 10:55:50], ~N[2026-06-17 10:55:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:50.857] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39251, oid: "c8af1b9b-43bd-4674-8ef2-d6e887974110", upload_time: "2026-06-17T10:55:00Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:50], updated_at: ~N[2026-06-17 10:55:50]} [2026-06-17 10:55:50.857] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:00Z", "value" => "morefun"} [2026-06-17 10:55:50.875] [DEBUG] QUERY OK db=17.5ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "morefun", "vendor", 39251, ~N[2026-06-17 10:55:50], ~N[2026-06-17 10:55:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:50.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306051, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:50], updated_at: ~N[2026-06-17 10:55:50]}} [2026-06-17 10:55:50.876] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:00Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:50.896] [DEBUG] QUERY OK db=19.8ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "kiosk_launcher", "model", 39251, ~N[2026-06-17 10:55:50], ~N[2026-06-17 10:55:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:50.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306052, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:50], updated_at: ~N[2026-06-17 10:55:50]}} [2026-06-17 10:55:50.896] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:00Z", "value" => "1.0"} [2026-06-17 10:55:50.930] [DEBUG] QUERY OK db=33.6ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "1.0", "app_version", 39251, ~N[2026-06-17 10:55:50], ~N[2026-06-17 10:55:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:50.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306053, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:50], updated_at: ~N[2026-06-17 10:55:50]}} [2026-06-17 10:55:50.931] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:00Z", "value" => "13"} [2026-06-17 10:55:50.949] [DEBUG] QUERY OK db=18.5ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "13", "android_version", 39251, ~N[2026-06-17 10:55:50], ~N[2026-06-17 10:55:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:50.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306054, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:50], updated_at: ~N[2026-06-17 10:55:50]}} [2026-06-17 10:55:50.950] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:00Z", "value" => "756"} [2026-06-17 10:55:50.964] [DEBUG] QUERY OK db=13.6ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "756", "ram_free_mb", 39251, ~N[2026-06-17 10:55:50], ~N[2026-06-17 10:55:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:50.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306055, itemkey: "ram_free_mb", value: "756", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:50], updated_at: ~N[2026-06-17 10:55:50]}} [2026-06-17 10:55:50.964] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:00Z", "value" => "WIFI"} [2026-06-17 10:55:50.979] [DEBUG] QUERY OK db=14.6ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "WIFI", "network_type", 39251, ~N[2026-06-17 10:55:50], ~N[2026-06-17 10:55:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:50.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306056, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:50], updated_at: ~N[2026-06-17 10:55:50]}} [2026-06-17 10:55:50.979] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:00Z", "value" => "true"} [2026-06-17 10:55:51.007] [DEBUG] QUERY OK db=26.8ms queue=0.3ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "true", "kiosk_active", 39251, ~N[2026-06-17 10:55:50], ~N[2026-06-17 10:55:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306057, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:50], updated_at: ~N[2026-06-17 10:55:50]}} [2026-06-17 10:55:51.007] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:00Z", "value" => ""} [2026-06-17 10:55:51.030] [DEBUG] QUERY OK db=22.5ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:00Z", "sim_operator", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306058, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.031] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"} [2026-06-17 10:55:51.052] [DEBUG] QUERY OK db=21.1ms queue=0.2ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "UNKNOWN", "sim_number", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306059, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.053] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"} [2026-06-17 10:55:51.076] [DEBUG] QUERY OK db=22.5ms idle=3.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "UNKNOWN", "sim_iccid", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306060, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.076] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"} [2026-06-17 10:55:51.100] [DEBUG] QUERY OK db=23.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "UNKNOWN", "sim_imsi", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306061, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.101] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"} [2026-06-17 10:55:51.135] [DEBUG] QUERY OK db=34.0ms queue=0.1ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "UNKNOWN", "sim_iccid2", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306062, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.136] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:00Z", "value" => "UNKNOWN"} [2026-06-17 10:55:51.156] [DEBUG] QUERY OK db=19.6ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "UNKNOWN", "sim_imsi2", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306063, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.156] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:00Z", "value" => "6"} [2026-06-17 10:55:51.173] [DEBUG] QUERY OK db=15.8ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "6", "data_usage_mb", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306064, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.173] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:00Z", "value" => "0"} [2026-06-17 10:55:51.187] [DEBUG] QUERY OK db=13.3ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "0", "mobile_data_mb", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306065, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.188] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:51.215] [DEBUG] QUERY OK db=25.4ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39251, ~N[2026-06-17 10:55:51], ~N[2026-06-17 10:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:51.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306066, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:00Z", message: nil, status_log_id: 39251, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:51], updated_at: ~N[2026-06-17 10:55:51]}} [2026-06-17 10:55:51.218] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=29.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:51.218] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:50]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:55:55.697] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:54:45Z"} [2026-06-17 10:55:55.697] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 37, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:55:56.831] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:55:56.831] [INFO ] Incoming JSON payload: {"oid":"406017ec-4298-4741-ac40-585c494e59d6","sn":"98251226730002","uploadTime":"2026-06-17T10:55:06Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"ram_free_mb","value":"757","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:06Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55:06Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:55:56.832] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "406017ec-4298-4741-ac40-585c494e59d6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:06Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:06Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:06Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:06Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:06Z", "value" => "757"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:06Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:06Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:06Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:06Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:06Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:06Z", "vendor" => "morefun"} [2026-06-17 10:55:56.832] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:55:56.833] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:55:56.834] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:55:56.836] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.3ms idle=1349.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-06-17 10:55:56.838] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=776.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-06-17 10:55:56.838] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:55:56.839] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:55:56.840] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:55:56.863] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:55:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:55:56.864] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:55:56.865] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:55:56.885] [DEBUG] QUERY OK source="tms_terminals" db=19.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:55:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:55:56.904] [DEBUG] QUERY OK db=19.4ms idle=19.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "406017ec-4298-4741-ac40-585c494e59d6", "2026-06-17T10:55:06Z", ~N[2026-06-17 10:55:56], ~N[2026-06-17 10:55:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:55:56.905] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39252, oid: "406017ec-4298-4741-ac40-585c494e59d6", upload_time: "2026-06-17T10:55:06Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:56], updated_at: ~N[2026-06-17 10:55:56]} [2026-06-17 10:55:56.905] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:06Z", "value" => "morefun"} [2026-06-17 10:55:56.939] [DEBUG] QUERY OK db=33.0ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "morefun", "vendor", 39252, ~N[2026-06-17 10:55:56], ~N[2026-06-17 10:55:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:56.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306067, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:56], updated_at: ~N[2026-06-17 10:55:56]}} [2026-06-17 10:55:56.939] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:06Z", "value" => "kiosk_launcher"} [2026-06-17 10:55:56.963] [DEBUG] QUERY OK db=23.2ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "kiosk_launcher", "model", 39252, ~N[2026-06-17 10:55:56], ~N[2026-06-17 10:55:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:56.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306068, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:56], updated_at: ~N[2026-06-17 10:55:56]}} [2026-06-17 10:55:56.963] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:06Z", "value" => "1.0"} [2026-06-17 10:55:56.990] [DEBUG] QUERY OK db=26.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "1.0", "app_version", 39252, ~N[2026-06-17 10:55:56], ~N[2026-06-17 10:55:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:56.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306069, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:56], updated_at: ~N[2026-06-17 10:55:56]}} [2026-06-17 10:55:56.990] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:06Z", "value" => "13"} [2026-06-17 10:55:57.012] [DEBUG] QUERY OK db=20.7ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "13", "android_version", 39252, ~N[2026-06-17 10:55:56], ~N[2026-06-17 10:55:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306070, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:56], updated_at: ~N[2026-06-17 10:55:56]}} [2026-06-17 10:55:57.012] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:06Z", "value" => "757"} [2026-06-17 10:55:57.046] [DEBUG] QUERY OK db=33.5ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "757", "ram_free_mb", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.046] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306071, itemkey: "ram_free_mb", value: "757", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.046] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:06Z", "value" => "WIFI"} [2026-06-17 10:55:57.070] [DEBUG] QUERY OK db=23.4ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "WIFI", "network_type", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306072, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.071] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:06Z", "value" => "true"} [2026-06-17 10:55:57.100] [DEBUG] QUERY OK db=28.8ms idle=8.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "true", "kiosk_active", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306073, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.100] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:06Z", "value" => ""} [2026-06-17 10:55:57.129] [DEBUG] QUERY OK db=27.9ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:06Z", "sim_operator", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306074, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.129] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"} [2026-06-17 10:55:57.163] [DEBUG] QUERY OK db=33.0ms queue=0.7ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "UNKNOWN", "sim_number", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306075, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.164] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"} [2026-06-17 10:55:57.187] [DEBUG] QUERY OK db=23.2ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "UNKNOWN", "sim_iccid", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306076, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.188] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"} [2026-06-17 10:55:57.205] [DEBUG] QUERY OK db=17.0ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "UNKNOWN", "sim_imsi", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306077, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.205] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"} [2026-06-17 10:55:57.217] [DEBUG] QUERY OK db=10.9ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "UNKNOWN", "sim_iccid2", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306078, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.217] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:06Z", "value" => "UNKNOWN"} [2026-06-17 10:55:57.246] [DEBUG] QUERY OK db=28.8ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "UNKNOWN", "sim_imsi2", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306079, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.247] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:06Z", "value" => "6"} [2026-06-17 10:55:57.271] [DEBUG] QUERY OK db=23.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "6", "data_usage_mb", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306080, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.272] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:06Z", "value" => "0"} [2026-06-17 10:55:57.301] [DEBUG] QUERY OK db=28.3ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "0", "mobile_data_mb", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306081, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.303] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:55:57.329] [DEBUG] QUERY OK db=24.3ms queue=0.1ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39252, ~N[2026-06-17 10:55:57], ~N[2026-06-17 10:55:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:55:57.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306082, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:06Z", message: nil, status_log_id: 39252, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:55:57], updated_at: ~N[2026-06-17 10:55:57]}} [2026-06-17 10:55:57.331] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=29.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:55:57.334] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:55:56]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:56:00.130] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T10:54:50Z"} [2026-06-17 10:56:00.130] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T10:54:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 41, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 10:56:02.943] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:02.943] [INFO ] Incoming JSON payload: {"oid":"2ceacdcc-36a5-41f4-86a3-b9386f48de0a","sn":"98251226730002","uploadTime":"2026-06-17T10:55:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"ram_free_mb","value":"755","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55:12Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:02.945] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2ceacdcc-36a5-41f4-86a3-b9386f48de0a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:12Z", "value" => "755"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:12Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:12Z", "vendor" => "morefun"} [2026-06-17 10:56:02.950] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:02.950] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:02.950] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:02.953] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=870.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-06-17 10:56:02.955] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=716.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.`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-06-17 10:56:02.955] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:02.957] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:02.959] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:03.004] [DEBUG] QUERY OK source="tms_terminals" db=44.4ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:03.005] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:03.007] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=47.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:03.044] [DEBUG] QUERY OK source="tms_terminals" db=36.6ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:03.064] [DEBUG] QUERY OK db=20.1ms idle=37.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "2ceacdcc-36a5-41f4-86a3-b9386f48de0a", "2026-06-17T10:55:12Z", ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:03.064] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39253, oid: "2ceacdcc-36a5-41f4-86a3-b9386f48de0a", upload_time: "2026-06-17T10:55:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]} [2026-06-17 10:56:03.065] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:12Z", "value" => "morefun"} [2026-06-17 10:56:03.109] [DEBUG] QUERY OK db=44.4ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "morefun", "vendor", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306083, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.110] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:12Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:03.168] [DEBUG] QUERY OK db=58.4ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "kiosk_launcher", "model", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306084, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.169] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:12Z", "value" => "1.0"} [2026-06-17 10:56:03.218] [DEBUG] QUERY OK db=48.9ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "1.0", "app_version", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306085, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.218] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:12Z", "value" => "13"} [2026-06-17 10:56:03.248] [DEBUG] QUERY OK db=29.0ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "13", "android_version", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306086, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.248] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:12Z", "value" => "755"} [2026-06-17 10:56:03.283] [DEBUG] QUERY OK db=34.7ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "755", "ram_free_mb", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306087, itemkey: "ram_free_mb", value: "755", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.284] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:12Z", "value" => "WIFI"} [2026-06-17 10:56:03.315] [DEBUG] QUERY OK db=29.4ms decode=1.5ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "WIFI", "network_type", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306088, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.316] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:12Z", "value" => "true"} [2026-06-17 10:56:03.351] [DEBUG] QUERY OK db=35.4ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "true", "kiosk_active", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306089, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.352] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:12Z", "value" => ""} [2026-06-17 10:56:03.388] [DEBUG] QUERY OK db=35.4ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:12Z", "sim_operator", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306090, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.388] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"} [2026-06-17 10:56:03.422] [DEBUG] QUERY OK db=30.1ms queue=1.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "UNKNOWN", "sim_number", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306091, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.423] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"} [2026-06-17 10:56:03.450] [DEBUG] QUERY OK db=26.5ms queue=0.6ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "UNKNOWN", "sim_iccid", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306092, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.451] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"} [2026-06-17 10:56:03.487] [DEBUG] QUERY OK db=36.4ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "UNKNOWN", "sim_imsi", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306093, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.488] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"} [2026-06-17 10:56:03.518] [DEBUG] QUERY OK db=30.1ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "UNKNOWN", "sim_iccid2", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306094, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.519] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:12Z", "value" => "UNKNOWN"} [2026-06-17 10:56:03.554] [DEBUG] QUERY OK db=35.1ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "UNKNOWN", "sim_imsi2", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306095, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.554] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:12Z", "value" => "6"} [2026-06-17 10:56:03.580] [DEBUG] QUERY OK db=25.3ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "6", "data_usage_mb", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306096, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.581] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:12Z", "value" => "0"} [2026-06-17 10:56:03.614] [DEBUG] QUERY OK db=32.9ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "0", "mobile_data_mb", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306097, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.615] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:03.641] [DEBUG] QUERY OK db=25.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39253, ~N[2026-06-17 10:56:03], ~N[2026-06-17 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:03.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306098, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:12Z", message: nil, status_log_id: 39253, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:03], updated_at: ~N[2026-06-17 10:56:03]}} [2026-06-17 10:56:03.652] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=34.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:03.653] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:03]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:56:09.015] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:09.015] [INFO ] Incoming JSON payload: {"oid":"3f6f1da9-1d0a-4308-b4ac-cbe7dd5e8f39","sn":"98251226730002","uploadTime":"2026-06-17T10:55:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"ram_free_mb","value":"754","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55:19Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:09.019] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3f6f1da9-1d0a-4308-b4ac-cbe7dd5e8f39", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:19Z", "value" => "754"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:19Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:19Z", "vendor" => "morefun"} [2026-06-17 10:56:09.021] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:09.021] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:09.022] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:09.023] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1786.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-06-17 10:56:09.024] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=892.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-06-17 10:56:09.024] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:09.025] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:09.025] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:09.073] [DEBUG] QUERY OK source="tms_terminals" db=47.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:09], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:09.074] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:09.075] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=48.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:09.094] [DEBUG] QUERY OK source="tms_terminals" db=18.9ms queue=0.2ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:09], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:09.120] [DEBUG] QUERY OK db=25.5ms idle=19.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3f6f1da9-1d0a-4308-b4ac-cbe7dd5e8f39", "2026-06-17T10:55:19Z", ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:09.120] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39254, oid: "3f6f1da9-1d0a-4308-b4ac-cbe7dd5e8f39", upload_time: "2026-06-17T10:55:19Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]} [2026-06-17 10:56:09.121] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:19Z", "value" => "morefun"} [2026-06-17 10:56:09.154] [DEBUG] QUERY OK db=33.3ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "morefun", "vendor", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306099, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.155] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:19Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:09.177] [DEBUG] QUERY OK db=22.2ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "kiosk_launcher", "model", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306100, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.178] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:19Z", "value" => "1.0"} [2026-06-17 10:56:09.197] [DEBUG] QUERY OK db=15.1ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "1.0", "app_version", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306101, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.198] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:19Z", "value" => "13"} [2026-06-17 10:56:09.240] [DEBUG] QUERY OK db=41.3ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "13", "android_version", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306102, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.241] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:19Z", "value" => "754"} [2026-06-17 10:56:09.269] [DEBUG] QUERY OK db=28.0ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "754", "ram_free_mb", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306103, itemkey: "ram_free_mb", value: "754", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.273] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:19Z", "value" => "WIFI"} [2026-06-17 10:56:09.288] [DEBUG] QUERY OK db=13.5ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "WIFI", "network_type", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306104, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.289] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:19Z", "value" => "true"} [2026-06-17 10:56:09.318] [DEBUG] QUERY OK db=23.9ms queue=5.0ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "true", "kiosk_active", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306105, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.319] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:19Z", "value" => ""} [2026-06-17 10:56:09.354] [DEBUG] QUERY OK db=32.9ms queue=1.5ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:19Z", "sim_operator", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306106, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.355] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"} [2026-06-17 10:56:09.380] [DEBUG] QUERY OK db=22.9ms queue=0.6ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "UNKNOWN", "sim_number", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306107, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.381] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"} [2026-06-17 10:56:09.398] [DEBUG] QUERY OK db=16.4ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "UNKNOWN", "sim_iccid", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306108, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.399] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"} [2026-06-17 10:56:09.422] [DEBUG] QUERY OK db=22.8ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "UNKNOWN", "sim_imsi", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306109, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.422] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"} [2026-06-17 10:56:09.448] [DEBUG] QUERY OK db=25.3ms queue=0.1ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "UNKNOWN", "sim_iccid2", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306110, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.449] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:19Z", "value" => "UNKNOWN"} [2026-06-17 10:56:09.472] [DEBUG] QUERY OK db=22.8ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "UNKNOWN", "sim_imsi2", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306111, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.472] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:19Z", "value" => "6"} [2026-06-17 10:56:09.487] [DEBUG] QUERY OK db=14.7ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "6", "data_usage_mb", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306112, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.488] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:19Z", "value" => "0"} [2026-06-17 10:56:09.505] [DEBUG] QUERY OK db=16.2ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "0", "mobile_data_mb", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306113, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.507] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:09.540] [DEBUG] QUERY OK db=31.7ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39254, ~N[2026-06-17 10:56:09], ~N[2026-06-17 10:56:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:09.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306114, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:19Z", message: nil, status_log_id: 39254, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:09], updated_at: ~N[2026-06-17 10:56:09]}} [2026-06-17 10:56:09.542] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=36.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:09.544] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:09]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:56:15.370] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:15.370] [INFO ] Incoming JSON payload: {"oid":"d90a4345-9cf3-409d-8ad6-4ab94d1bce0e","sn":"98251226730002","uploadTime":"2026-06-17T10:55:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"ram_free_mb","value":"754","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:15.372] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d90a4345-9cf3-409d-8ad6-4ab94d1bce0e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:25Z", "value" => "754"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:25Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:25Z", "vendor" => "morefun"} [2026-06-17 10:56:15.372] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:15.372] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:15.372] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:15.374] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=202.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-06-17 10:56:15.375] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=130.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-06-17 10:56:15.377] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:15.378] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:15.380] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:15.406] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:15], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:15.406] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:15.409] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:15.443] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:15], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:15.470] [DEBUG] QUERY OK db=26.6ms idle=34.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d90a4345-9cf3-409d-8ad6-4ab94d1bce0e", "2026-06-17T10:55:25Z", ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:15.471] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39255, oid: "d90a4345-9cf3-409d-8ad6-4ab94d1bce0e", upload_time: "2026-06-17T10:55:25Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]} [2026-06-17 10:56:15.471] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:25Z", "value" => "morefun"} [2026-06-17 10:56:15.496] [DEBUG] QUERY OK db=23.9ms queue=0.7ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "morefun", "vendor", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306115, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.496] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:25Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:15.530] [DEBUG] QUERY OK db=32.9ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "kiosk_launcher", "model", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306116, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.530] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:25Z", "value" => "1.0"} [2026-06-17 10:56:15.553] [DEBUG] QUERY OK db=23.1ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "1.0", "app_version", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306117, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.554] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:25Z", "value" => "13"} [2026-06-17 10:56:15.577] [DEBUG] QUERY OK db=22.7ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "13", "android_version", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306118, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.579] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:25Z", "value" => "754"} [2026-06-17 10:56:15.614] [DEBUG] QUERY OK db=33.3ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "754", "ram_free_mb", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306119, itemkey: "ram_free_mb", value: "754", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.614] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:25Z", "value" => "WIFI"} [2026-06-17 10:56:15.638] [DEBUG] QUERY OK db=22.9ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "WIFI", "network_type", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306120, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.640] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:25Z", "value" => "true"} [2026-06-17 10:56:15.670] [DEBUG] QUERY OK db=29.2ms queue=0.1ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "true", "kiosk_active", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306121, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.670] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:25Z", "value" => ""} [2026-06-17 10:56:15.708] [DEBUG] QUERY OK db=33.5ms queue=3.7ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:25Z", "sim_operator", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306122, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.709] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"} [2026-06-17 10:56:15.734] [DEBUG] QUERY OK db=24.8ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "UNKNOWN", "sim_number", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306123, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.735] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"} [2026-06-17 10:56:15.767] [DEBUG] QUERY OK db=32.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "UNKNOWN", "sim_iccid", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306124, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.768] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"} [2026-06-17 10:56:15.790] [DEBUG] QUERY OK db=21.3ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "UNKNOWN", "sim_imsi", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306125, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.792] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"} [2026-06-17 10:56:15.823] [DEBUG] QUERY OK db=27.4ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "UNKNOWN", "sim_iccid2", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306126, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.824] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:25Z", "value" => "UNKNOWN"} [2026-06-17 10:56:15.852] [DEBUG] QUERY OK db=27.7ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "UNKNOWN", "sim_imsi2", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306127, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.853] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:25Z", "value" => "6"} [2026-06-17 10:56:15.888] [DEBUG] QUERY OK db=35.2ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "6", "data_usage_mb", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306128, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.888] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:25Z", "value" => "0"} [2026-06-17 10:56:15.909] [DEBUG] QUERY OK db=20.6ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:25Z", "0", "mobile_data_mb", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306129, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.912] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:15.944] [DEBUG] QUERY OK db=27.6ms queue=0.1ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39255, ~N[2026-06-17 10:56:15], ~N[2026-06-17 10:56:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:15.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306130, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:25Z", message: nil, status_log_id: 39255, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:15], updated_at: ~N[2026-06-17 10:56:15]}} [2026-06-17 10:56:15.947] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=35.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:15.948] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:15]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:56:21.613] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:21.613] [INFO ] Incoming JSON payload: {"oid":"40f1dbb9-1651-42d1-b45d-71073ccacccb","sn":"98251226730002","uploadTime":"2026-06-17T10:55:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"ram_free_mb","value":"751","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55:31Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:21.616] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "40f1dbb9-1651-42d1-b45d-71073ccacccb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:31Z", "value" => "751"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:31Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:31Z", "vendor" => "morefun"} [2026-06-17 10:56:21.616] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:21.616] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:21.617] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:21.621] [DEBUG] QUERY OK source="parameter_templates" db=3.8ms idle=430.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-06-17 10:56:21.623] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.7ms idle=369.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-06-17 10:56:21.623] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:21.627] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:21.627] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:21.651] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:21.651] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:21.654] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:21.672] [DEBUG] QUERY OK source="tms_terminals" db=17.7ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:21.717] [DEBUG] QUERY OK db=44.5ms queue=0.1ms idle=18.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "40f1dbb9-1651-42d1-b45d-71073ccacccb", "2026-06-17T10:55:31Z", ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:21.720] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39256, oid: "40f1dbb9-1651-42d1-b45d-71073ccacccb", upload_time: "2026-06-17T10:55:31Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]} [2026-06-17 10:56:21.720] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:31Z", "value" => "morefun"} [2026-06-17 10:56:21.752] [DEBUG] QUERY OK db=23.0ms idle=56.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "morefun", "vendor", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306131, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.752] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:31Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:21.770] [DEBUG] QUERY OK db=13.3ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "kiosk_launcher", "model", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306132, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.770] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:31Z", "value" => "1.0"} [2026-06-17 10:56:21.810] [DEBUG] QUERY OK db=39.3ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "1.0", "app_version", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306133, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.811] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:31Z", "value" => "13"} [2026-06-17 10:56:21.850] [DEBUG] QUERY OK db=38.6ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "13", "android_version", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306134, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.850] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:31Z", "value" => "751"} [2026-06-17 10:56:21.872] [DEBUG] QUERY OK db=21.0ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "751", "ram_free_mb", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306135, itemkey: "ram_free_mb", value: "751", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.872] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:31Z", "value" => "WIFI"} [2026-06-17 10:56:21.885] [DEBUG] QUERY OK db=12.3ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "WIFI", "network_type", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306136, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.887] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:31Z", "value" => "true"} [2026-06-17 10:56:21.920] [DEBUG] QUERY OK db=32.5ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "true", "kiosk_active", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306137, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.920] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:31Z", "value" => ""} [2026-06-17 10:56:21.945] [DEBUG] QUERY OK db=24.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:31Z", "sim_operator", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306138, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.946] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"} [2026-06-17 10:56:21.966] [DEBUG] QUERY OK db=19.9ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "UNKNOWN", "sim_number", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306139, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.967] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"} [2026-06-17 10:56:21.985] [DEBUG] QUERY OK db=17.7ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "UNKNOWN", "sim_iccid", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:21.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306140, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:21.985] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"} [2026-06-17 10:56:22.008] [DEBUG] QUERY OK db=22.5ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "UNKNOWN", "sim_imsi", 39256, ~N[2026-06-17 10:56:21], ~N[2026-06-17 10:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:22.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306141, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:21], updated_at: ~N[2026-06-17 10:56:21]}} [2026-06-17 10:56:22.009] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"} [2026-06-17 10:56:22.034] [DEBUG] QUERY OK db=24.5ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "UNKNOWN", "sim_iccid2", 39256, ~N[2026-06-17 10:56:22], ~N[2026-06-17 10:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:22.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306142, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:22], updated_at: ~N[2026-06-17 10:56:22]}} [2026-06-17 10:56:22.036] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:31Z", "value" => "UNKNOWN"} [2026-06-17 10:56:22.062] [DEBUG] QUERY OK db=25.8ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "UNKNOWN", "sim_imsi2", 39256, ~N[2026-06-17 10:56:22], ~N[2026-06-17 10:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:22.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306143, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:22], updated_at: ~N[2026-06-17 10:56:22]}} [2026-06-17 10:56:22.063] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:31Z", "value" => "6"} [2026-06-17 10:56:22.076] [DEBUG] QUERY OK db=12.3ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "6", "data_usage_mb", 39256, ~N[2026-06-17 10:56:22], ~N[2026-06-17 10:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:22.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306144, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:22], updated_at: ~N[2026-06-17 10:56:22]}} [2026-06-17 10:56:22.076] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:31Z", "value" => "0"} [2026-06-17 10:56:22.102] [DEBUG] QUERY OK db=25.2ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "0", "mobile_data_mb", 39256, ~N[2026-06-17 10:56:22], ~N[2026-06-17 10:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:22.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306145, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:22], updated_at: ~N[2026-06-17 10:56:22]}} [2026-06-17 10:56:22.103] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:22.142] [DEBUG] QUERY OK db=36.8ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39256, ~N[2026-06-17 10:56:22], ~N[2026-06-17 10:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:22.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306146, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:31Z", message: nil, status_log_id: 39256, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:22], updated_at: ~N[2026-06-17 10:56:22]}} [2026-06-17 10:56:22.147] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=42.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:22.147] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:21]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 33, serial_number: "98251226730001", oid: "organization_id", status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-04-15 06:09:54], updated_at: ~N[2026-06-17 10:42:33]}] [2026-06-17 10:56:27.575] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:27.575] [INFO ] Incoming JSON payload: {"oid":"3201f729-c6ea-4c34-aaf1-74feda89b815","sn":"98251226730002","uploadTime":"2026-06-17T10:55:37Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"ram_free_mb","value":"749","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:37Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:27.576] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3201f729-c6ea-4c34-aaf1-74feda89b815", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:37Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:37Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:37Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:37Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:37Z", "value" => "749"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:37Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:37Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:37Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:37Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:37Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:37Z", "vendor" => "morefun"} [2026-06-17 10:56:27.576] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:27.576] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:27.577] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:27.580] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=1328.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-06-17 10:56:27.583] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms queue=0.1ms idle=368.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-06-17 10:56:27.583] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:27.587] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:27.587] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:27.625] [DEBUG] QUERY OK source="tms_terminals" db=37.8ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:27.625] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:27.627] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=38.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:27.639] [DEBUG] QUERY OK source="tms_terminals" db=11.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:27.650] [DEBUG] QUERY OK db=11.1ms idle=11.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3201f729-c6ea-4c34-aaf1-74feda89b815", "2026-06-17T10:55:37Z", ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:27.650] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39257, oid: "3201f729-c6ea-4c34-aaf1-74feda89b815", upload_time: "2026-06-17T10:55:37Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]} [2026-06-17 10:56:27.650] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:37Z", "value" => "morefun"} [2026-06-17 10:56:27.668] [DEBUG] QUERY OK db=17.1ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "morefun", "vendor", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306147, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.668] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:37Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:27.692] [DEBUG] QUERY OK db=23.5ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "kiosk_launcher", "model", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306148, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.694] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:37Z", "value" => "1.0"} [2026-06-17 10:56:27.726] [DEBUG] QUERY OK db=32.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "1.0", "app_version", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306149, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.727] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:37Z", "value" => "13"} [2026-06-17 10:56:27.743] [DEBUG] QUERY OK db=16.2ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "13", "android_version", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306150, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.744] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:37Z", "value" => "749"} [2026-06-17 10:56:27.765] [DEBUG] QUERY OK db=20.4ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "749", "ram_free_mb", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306151, itemkey: "ram_free_mb", value: "749", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.765] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:37Z", "value" => "WIFI"} [2026-06-17 10:56:27.790] [DEBUG] QUERY OK db=24.5ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "WIFI", "network_type", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306152, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.791] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:37Z", "value" => "true"} [2026-06-17 10:56:27.819] [DEBUG] QUERY OK db=27.7ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "true", "kiosk_active", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306153, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.819] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:37Z", "value" => ""} [2026-06-17 10:56:27.836] [DEBUG] QUERY OK db=16.5ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:37Z", "sim_operator", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306154, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.837] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"} [2026-06-17 10:56:27.860] [DEBUG] QUERY OK db=20.3ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "UNKNOWN", "sim_number", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306155, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.861] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"} [2026-06-17 10:56:27.895] [DEBUG] QUERY OK db=28.7ms queue=0.1ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "UNKNOWN", "sim_iccid", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306156, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.895] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"} [2026-06-17 10:56:27.917] [DEBUG] QUERY OK db=21.1ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "UNKNOWN", "sim_imsi", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306157, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.919] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"} [2026-06-17 10:56:27.934] [DEBUG] QUERY OK db=14.6ms queue=0.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "UNKNOWN", "sim_iccid2", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306158, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.935] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:37Z", "value" => "UNKNOWN"} [2026-06-17 10:56:27.963] [DEBUG] QUERY OK db=27.7ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "UNKNOWN", "sim_imsi2", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306159, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.964] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:37Z", "value" => "6"} [2026-06-17 10:56:27.989] [DEBUG] QUERY OK db=24.7ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "6", "data_usage_mb", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:27.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306160, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:27.989] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:37Z", "value" => "0"} [2026-06-17 10:56:28.020] [DEBUG] QUERY OK db=30.7ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:37Z", "0", "mobile_data_mb", 39257, ~N[2026-06-17 10:56:27], ~N[2026-06-17 10:56:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:28.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306161, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:27], updated_at: ~N[2026-06-17 10:56:27]}} [2026-06-17 10:56:28.021] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:28.035] [DEBUG] QUERY OK db=12.7ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39257, ~N[2026-06-17 10:56:28], ~N[2026-06-17 10:56:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:28.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306162, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:37Z", message: nil, status_log_id: 39257, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:28], updated_at: ~N[2026-06-17 10:56:28]}} [2026-06-17 10:56:28.038] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=16.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:28.040] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:56:33.618] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:33.618] [INFO ] Incoming JSON payload: {"oid":"a0553d11-505a-40fa-9a23-ac186d24c7d7","sn":"98251226730002","uploadTime":"2026-06-17T10:55:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"ram_free_mb","value":"749","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:33.619] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a0553d11-505a-40fa-9a23-ac186d24c7d7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:43Z", "value" => "749"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:43Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:43Z", "vendor" => "morefun"} [2026-06-17 10:56:33.619] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:33.619] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:33.619] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:33.621] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=384.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:56:33.622] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=372.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-06-17 10:56:33.622] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:33.624] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:33.624] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:33.661] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:33.661] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:33.662] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=37.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:33.695] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:33.720] [DEBUG] QUERY OK db=24.4ms idle=33.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a0553d11-505a-40fa-9a23-ac186d24c7d7", "2026-06-17T10:55:43Z", ~N[2026-06-17 10:56:33], ~N[2026-06-17 10:56:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:33.721] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39258, oid: "a0553d11-505a-40fa-9a23-ac186d24c7d7", upload_time: "2026-06-17T10:55:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:33], updated_at: ~N[2026-06-17 10:56:33]} [2026-06-17 10:56:33.721] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:43Z", "value" => "morefun"} [2026-06-17 10:56:33.757] [DEBUG] QUERY OK db=35.3ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "morefun", "vendor", 39258, ~N[2026-06-17 10:56:33], ~N[2026-06-17 10:56:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:33.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306163, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:33], updated_at: ~N[2026-06-17 10:56:33]}} [2026-06-17 10:56:33.757] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:43Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:33.781] [DEBUG] QUERY OK db=21.1ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "kiosk_launcher", "model", 39258, ~N[2026-06-17 10:56:33], ~N[2026-06-17 10:56:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:33.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306164, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:33], updated_at: ~N[2026-06-17 10:56:33]}} [2026-06-17 10:56:33.788] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:43Z", "value" => "1.0"} [2026-06-17 10:56:33.952] [DEBUG] QUERY OK db=163.7ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "1.0", "app_version", 39258, ~N[2026-06-17 10:56:33], ~N[2026-06-17 10:56:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:33.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306165, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:33], updated_at: ~N[2026-06-17 10:56:33]}} [2026-06-17 10:56:33.953] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:43Z", "value" => "13"} [2026-06-17 10:56:33.977] [DEBUG] QUERY OK db=24.0ms idle=174.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "13", "android_version", 39258, ~N[2026-06-17 10:56:33], ~N[2026-06-17 10:56:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:33.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306166, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:33], updated_at: ~N[2026-06-17 10:56:33]}} [2026-06-17 10:56:33.978] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:43Z", "value" => "749"} [2026-06-17 10:56:34.005] [DEBUG] QUERY OK db=26.6ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "749", "ram_free_mb", 39258, ~N[2026-06-17 10:56:33], ~N[2026-06-17 10:56:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306167, itemkey: "ram_free_mb", value: "749", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:33], updated_at: ~N[2026-06-17 10:56:33]}} [2026-06-17 10:56:34.006] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:43Z", "value" => "WIFI"} [2026-06-17 10:56:34.027] [DEBUG] QUERY OK db=21.1ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "WIFI", "network_type", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306168, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.028] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:43Z", "value" => "true"} [2026-06-17 10:56:34.060] [DEBUG] QUERY OK db=30.5ms queue=1.5ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "true", "kiosk_active", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306169, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.061] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:43Z", "value" => ""} [2026-06-17 10:56:34.087] [DEBUG] QUERY OK db=25.9ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:43Z", "sim_operator", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306170, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.088] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"} [2026-06-17 10:56:34.118] [DEBUG] QUERY OK db=27.7ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "UNKNOWN", "sim_number", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306171, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.118] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"} [2026-06-17 10:56:34.133] [DEBUG] QUERY OK db=14.0ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "UNKNOWN", "sim_iccid", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306172, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.134] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"} [2026-06-17 10:56:34.170] [DEBUG] QUERY OK db=35.4ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "UNKNOWN", "sim_imsi", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306173, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.170] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"} [2026-06-17 10:56:34.196] [DEBUG] QUERY OK db=24.1ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "UNKNOWN", "sim_iccid2", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306174, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.196] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:43Z", "value" => "UNKNOWN"} [2026-06-17 10:56:34.226] [DEBUG] QUERY OK db=29.0ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "UNKNOWN", "sim_imsi2", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306175, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.228] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:43Z", "value" => "6"} [2026-06-17 10:56:34.242] [DEBUG] QUERY OK db=11.8ms queue=1.4ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "6", "data_usage_mb", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306176, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.242] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:43Z", "value" => "0"} [2026-06-17 10:56:34.275] [DEBUG] QUERY OK db=31.8ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:43Z", "0", "mobile_data_mb", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306177, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.275] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:34.306] [DEBUG] QUERY OK db=29.2ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39258, ~N[2026-06-17 10:56:34], ~N[2026-06-17 10:56:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:34.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306178, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:43Z", message: nil, status_log_id: 39258, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:34], updated_at: ~N[2026-06-17 10:56:34]}} [2026-06-17 10:56:34.308] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=32.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:34.309] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:56:39.831] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:39.831] [INFO ] Incoming JSON payload: {"oid":"7529b1ed-0f61-448f-9c7d-333c5627fd23","sn":"98251226730002","uploadTime":"2026-06-17T10:55:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"ram_free_mb","value":"750","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55:49Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:39.834] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7529b1ed-0f61-448f-9c7d-333c5627fd23", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:49Z", "value" => "750"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:49Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:49Z", "vendor" => "morefun"} [2026-06-17 10:56:39.835] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:39.835] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:39.835] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:39.839] [DEBUG] QUERY OK source="parameter_templates" db=3.5ms queue=0.1ms idle=577.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:56:39.842] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.9ms idle=174.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-06-17 10:56:39.842] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:39.847] [DEBUG] QUERY OK source="tms_terminals" db=5.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:39.847] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:39.875] [DEBUG] QUERY OK source="tms_terminals" db=27.3ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:39.875] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:39.876] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:39.903] [DEBUG] QUERY OK source="tms_terminals" db=26.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:39.928] [DEBUG] QUERY OK db=24.4ms idle=27.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "7529b1ed-0f61-448f-9c7d-333c5627fd23", "2026-06-17T10:55:49Z", ~N[2026-06-17 10:56:39], ~N[2026-06-17 10:56:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:39.930] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39259, oid: "7529b1ed-0f61-448f-9c7d-333c5627fd23", upload_time: "2026-06-17T10:55:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:39], updated_at: ~N[2026-06-17 10:56:39]} [2026-06-17 10:56:39.930] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:49Z", "value" => "morefun"} [2026-06-17 10:56:39.970] [DEBUG] QUERY OK db=39.1ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "morefun", "vendor", 39259, ~N[2026-06-17 10:56:39], ~N[2026-06-17 10:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:39.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306179, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:39], updated_at: ~N[2026-06-17 10:56:39]}} [2026-06-17 10:56:39.970] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:49Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:40.003] [DEBUG] QUERY OK db=32.0ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "kiosk_launcher", "model", 39259, ~N[2026-06-17 10:56:39], ~N[2026-06-17 10:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306180, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:39], updated_at: ~N[2026-06-17 10:56:39]}} [2026-06-17 10:56:40.003] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:49Z", "value" => "1.0"} [2026-06-17 10:56:40.021] [DEBUG] QUERY OK db=17.4ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "1.0", "app_version", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306181, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.021] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:49Z", "value" => "13"} [2026-06-17 10:56:40.050] [DEBUG] QUERY OK db=28.5ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "13", "android_version", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306182, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.051] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:49Z", "value" => "750"} [2026-06-17 10:56:40.090] [DEBUG] QUERY OK db=38.6ms queue=0.2ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "750", "ram_free_mb", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306183, itemkey: "ram_free_mb", value: "750", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.091] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:49Z", "value" => "WIFI"} [2026-06-17 10:56:40.126] [DEBUG] QUERY OK db=35.1ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "WIFI", "network_type", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306184, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.127] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:49Z", "value" => "true"} [2026-06-17 10:56:40.173] [DEBUG] QUERY OK db=46.3ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "true", "kiosk_active", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.174] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306185, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.174] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:49Z", "value" => ""} [2026-06-17 10:56:40.240] [DEBUG] QUERY OK db=64.9ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:49Z", "sim_operator", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306186, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.240] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"} [2026-06-17 10:56:40.266] [DEBUG] QUERY OK db=25.6ms idle=67.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "UNKNOWN", "sim_number", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306187, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.267] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"} [2026-06-17 10:56:40.293] [DEBUG] QUERY OK db=26.0ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "UNKNOWN", "sim_iccid", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306188, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.293] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"} [2026-06-17 10:56:40.317] [DEBUG] QUERY OK db=22.9ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "UNKNOWN", "sim_imsi", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306189, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.317] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"} [2026-06-17 10:56:40.340] [DEBUG] QUERY OK db=22.4ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "UNKNOWN", "sim_iccid2", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306190, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.341] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:49Z", "value" => "UNKNOWN"} [2026-06-17 10:56:40.361] [DEBUG] QUERY OK db=19.2ms queue=0.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "UNKNOWN", "sim_imsi2", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306191, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.364] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:49Z", "value" => "6"} [2026-06-17 10:56:40.398] [DEBUG] QUERY OK db=33.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "6", "data_usage_mb", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306192, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.398] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:49Z", "value" => "0"} [2026-06-17 10:56:40.423] [DEBUG] QUERY OK db=24.2ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "0", "mobile_data_mb", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306193, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.425] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:40.460] [DEBUG] QUERY OK db=33.1ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39259, ~N[2026-06-17 10:56:40], ~N[2026-06-17 10:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:40.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306194, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:49Z", message: nil, status_log_id: 39259, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:40], updated_at: ~N[2026-06-17 10:56:40]}} [2026-06-17 10:56:40.462] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.8ms idle=38.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:40.464] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:39]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:56:45.917] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:45.917] [INFO ] Incoming JSON payload: {"oid":"8034683f-5677-405d-8e18-4d0aaab603ec","sn":"98251226730002","uploadTime":"2026-06-17T10:55:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"ram_free_mb","value":"751","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:55:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:55:55Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:45.920] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8034683f-5677-405d-8e18-4d0aaab603ec", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:55Z", "value" => "751"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:55Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:55:55Z", "vendor" => "morefun"} [2026-06-17 10:56:45.921] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:45.921] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:45.921] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:45.923] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=670.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-06-17 10:56:45.928] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.2ms idle=647.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-06-17 10:56:45.928] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:45.930] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=5.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:45.931] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:45.956] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:45.957] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:45.959] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:45.980] [DEBUG] QUERY OK source="tms_terminals" db=20.9ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:45.998] [DEBUG] QUERY OK db=17.4ms queue=0.3ms idle=22.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8034683f-5677-405d-8e18-4d0aaab603ec", "2026-06-17T10:55:55Z", ~N[2026-06-17 10:56:45], ~N[2026-06-17 10:56:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:45.999] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39260, oid: "8034683f-5677-405d-8e18-4d0aaab603ec", upload_time: "2026-06-17T10:55:55Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:45], updated_at: ~N[2026-06-17 10:56:45]} [2026-06-17 10:56:45.999] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:55:55Z", "value" => "morefun"} [2026-06-17 10:56:46.022] [DEBUG] QUERY OK db=23.1ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "morefun", "vendor", 39260, ~N[2026-06-17 10:56:45], ~N[2026-06-17 10:56:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306195, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:45], updated_at: ~N[2026-06-17 10:56:45]}} [2026-06-17 10:56:46.025] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:55:55Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:46.057] [DEBUG] QUERY OK db=32.3ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "kiosk_launcher", "model", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306196, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.058] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:55:55Z", "value" => "1.0"} [2026-06-17 10:56:46.086] [DEBUG] QUERY OK db=26.4ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "1.0", "app_version", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306197, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.087] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:55:55Z", "value" => "13"} [2026-06-17 10:56:46.126] [DEBUG] QUERY OK db=38.0ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "13", "android_version", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306198, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.127] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:55:55Z", "value" => "751"} [2026-06-17 10:56:46.188] [DEBUG] QUERY OK db=61.5ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "751", "ram_free_mb", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306199, itemkey: "ram_free_mb", value: "751", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.190] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:55:55Z", "value" => "WIFI"} [2026-06-17 10:56:46.222] [DEBUG] QUERY OK db=31.8ms decode=0.2ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "WIFI", "network_type", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306200, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.223] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:55:55Z", "value" => "true"} [2026-06-17 10:56:46.255] [DEBUG] QUERY OK db=32.2ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "true", "kiosk_active", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306201, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.255] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:55:55Z", "value" => ""} [2026-06-17 10:56:46.279] [DEBUG] QUERY OK db=22.7ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:55:55Z", "sim_operator", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306202, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.279] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"} [2026-06-17 10:56:46.306] [DEBUG] QUERY OK db=24.5ms idle=3.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "UNKNOWN", "sim_number", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306203, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.306] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"} [2026-06-17 10:56:46.335] [DEBUG] QUERY OK db=26.0ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "UNKNOWN", "sim_iccid", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306204, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.335] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"} [2026-06-17 10:56:46.368] [DEBUG] QUERY OK db=32.0ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "UNKNOWN", "sim_imsi", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306205, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.368] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"} [2026-06-17 10:56:46.395] [DEBUG] QUERY OK db=25.9ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "UNKNOWN", "sim_iccid2", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306206, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.395] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:55:55Z", "value" => "UNKNOWN"} [2026-06-17 10:56:46.424] [DEBUG] QUERY OK db=28.6ms queue=0.2ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "UNKNOWN", "sim_imsi2", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306207, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.425] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:55:55Z", "value" => "6"} [2026-06-17 10:56:46.458] [DEBUG] QUERY OK db=32.9ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "6", "data_usage_mb", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306208, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.458] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:55:55Z", "value" => "0"} [2026-06-17 10:56:46.483] [DEBUG] QUERY OK db=23.7ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "0", "mobile_data_mb", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306209, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.483] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:55:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:46.509] [DEBUG] QUERY OK db=24.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:55:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39260, ~N[2026-06-17 10:56:46], ~N[2026-06-17 10:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:46.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306210, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:55:55Z", message: nil, status_log_id: 39260, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:46], updated_at: ~N[2026-06-17 10:56:46]}} [2026-06-17 10:56:46.512] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=28.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:46.514] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:56:52.268] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:52.268] [INFO ] Incoming JSON payload: {"oid":"a4155b2c-1f44-43d2-aab2-c1ec8056d721","sn":"98251226730002","uploadTime":"2026-06-17T10:56:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"ram_free_mb","value":"750","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56:01Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:52.271] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a4155b2c-1f44-43d2-aab2-c1ec8056d721", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:01Z", "value" => "750"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:01Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:01Z", "vendor" => "morefun"} [2026-06-17 10:56:52.271] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:52.271] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:52.271] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:52.272] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=962.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:56:52.275] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=23.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.`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-06-17 10:56:52.275] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:52.276] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:52.276] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:52.304] [DEBUG] QUERY OK source="tms_terminals" db=27.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:52.304] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:52.305] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:52.340] [DEBUG] QUERY OK source="tms_terminals" db=33.8ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:52.362] [DEBUG] QUERY OK db=22.3ms idle=29.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a4155b2c-1f44-43d2-aab2-c1ec8056d721", "2026-06-17T10:56:01Z", ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:52.363] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39261, oid: "a4155b2c-1f44-43d2-aab2-c1ec8056d721", upload_time: "2026-06-17T10:56:01Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]} [2026-06-17 10:56:52.363] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:01Z", "value" => "morefun"} [2026-06-17 10:56:52.392] [DEBUG] QUERY OK db=27.5ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "morefun", "vendor", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306211, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.393] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:01Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:52.424] [DEBUG] QUERY OK db=31.1ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "kiosk_launcher", "model", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306212, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.425] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:01Z", "value" => "1.0"} [2026-06-17 10:56:52.462] [DEBUG] QUERY OK db=37.2ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "1.0", "app_version", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306213, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.463] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:01Z", "value" => "13"} [2026-06-17 10:56:52.496] [DEBUG] QUERY OK db=32.3ms queue=0.1ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "13", "android_version", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306214, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.496] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:01Z", "value" => "750"} [2026-06-17 10:56:52.516] [DEBUG] QUERY OK db=19.2ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "750", "ram_free_mb", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306215, itemkey: "ram_free_mb", value: "750", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.516] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:01Z", "value" => "WIFI"} [2026-06-17 10:56:52.548] [DEBUG] QUERY OK db=31.7ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "WIFI", "network_type", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306216, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.549] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:01Z", "value" => "true"} [2026-06-17 10:56:52.572] [DEBUG] QUERY OK db=23.3ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "true", "kiosk_active", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306217, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.573] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:01Z", "value" => ""} [2026-06-17 10:56:52.602] [DEBUG] QUERY OK db=28.7ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:01Z", "sim_operator", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306218, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.602] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"} [2026-06-17 10:56:52.636] [DEBUG] QUERY OK db=33.2ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "UNKNOWN", "sim_number", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306219, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.636] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"} [2026-06-17 10:56:52.654] [DEBUG] QUERY OK db=17.8ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "UNKNOWN", "sim_iccid", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306220, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.655] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"} [2026-06-17 10:56:52.684] [DEBUG] QUERY OK db=28.6ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "UNKNOWN", "sim_imsi", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306221, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.685] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"} [2026-06-17 10:56:52.715] [DEBUG] QUERY OK db=30.0ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "UNKNOWN", "sim_iccid2", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306222, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.715] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:01Z", "value" => "UNKNOWN"} [2026-06-17 10:56:52.749] [DEBUG] QUERY OK db=33.6ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "UNKNOWN", "sim_imsi2", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306223, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.750] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:01Z", "value" => "6"} [2026-06-17 10:56:52.772] [DEBUG] QUERY OK db=21.4ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "6", "data_usage_mb", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306224, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.773] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:01Z", "value" => "0"} [2026-06-17 10:56:52.801] [DEBUG] QUERY OK db=25.3ms queue=0.2ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "0", "mobile_data_mb", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306225, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.802] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:52.849] [DEBUG] QUERY OK db=45.3ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39261, ~N[2026-06-17 10:56:52], ~N[2026-06-17 10:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:52.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306226, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:01Z", message: nil, status_log_id: 39261, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:52], updated_at: ~N[2026-06-17 10:56:52]}} [2026-06-17 10:56:52.853] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=50.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:52.855] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:52]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:56:58.521] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:56:58.522] [INFO ] Incoming JSON payload: {"oid":"05de0c9b-6d8f-403b-bd89-2d89a1941780","sn":"98251226730002","uploadTime":"2026-06-17T10:56:08Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"ram_free_mb","value":"751","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:08Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56:08Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:56:58.522] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "05de0c9b-6d8f-403b-bd89-2d89a1941780", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:08Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:08Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:08Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:08Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:08Z", "value" => "751"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:08Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:08Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:08Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:08Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:08Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:08Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:08Z", "vendor" => "morefun"} [2026-06-17 10:56:58.522] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:56:58.523] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:56:58.523] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:56:58.526] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=1198.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-06-17 10:56:58.528] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=198.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-06-17 10:56:58.528] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:56:58.529] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:56:58.529] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:56:58.567] [DEBUG] QUERY OK source="tms_terminals" db=37.9ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:56:58], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:56:58.568] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:56:58.570] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.5ms idle=39.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:56:58.586] [DEBUG] QUERY OK source="tms_terminals" db=15.4ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:56:58], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:56:58.603] [DEBUG] QUERY OK db=17.1ms idle=16.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "05de0c9b-6d8f-403b-bd89-2d89a1941780", "2026-06-17T10:56:08Z", ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:56:58.604] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39262, oid: "05de0c9b-6d8f-403b-bd89-2d89a1941780", upload_time: "2026-06-17T10:56:08Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]} [2026-06-17 10:56:58.605] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:08Z", "value" => "morefun"} [2026-06-17 10:56:58.640] [DEBUG] QUERY OK db=34.6ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "morefun", "vendor", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306227, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.641] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:08Z", "value" => "kiosk_launcher"} [2026-06-17 10:56:58.678] [DEBUG] QUERY OK db=37.0ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "kiosk_launcher", "model", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306228, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.679] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:08Z", "value" => "1.0"} [2026-06-17 10:56:58.705] [DEBUG] QUERY OK db=25.8ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "1.0", "app_version", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306229, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.710] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:08Z", "value" => "13"} [2026-06-17 10:56:58.731] [DEBUG] QUERY OK db=18.7ms queue=0.1ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "13", "android_version", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306230, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.731] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:08Z", "value" => "751"} [2026-06-17 10:56:58.768] [DEBUG] QUERY OK db=36.0ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "751", "ram_free_mb", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306231, itemkey: "ram_free_mb", value: "751", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.771] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:08Z", "value" => "WIFI"} [2026-06-17 10:56:58.807] [DEBUG] QUERY OK db=30.7ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "WIFI", "network_type", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306232, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.808] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:08Z", "value" => "true"} [2026-06-17 10:56:58.830] [DEBUG] QUERY OK db=22.2ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "true", "kiosk_active", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306233, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.830] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:08Z", "value" => ""} [2026-06-17 10:56:58.858] [DEBUG] QUERY OK db=27.2ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:08Z", "sim_operator", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306234, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.858] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"} [2026-06-17 10:56:58.883] [DEBUG] QUERY OK db=23.8ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "UNKNOWN", "sim_number", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306235, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.883] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"} [2026-06-17 10:56:58.919] [DEBUG] QUERY OK db=35.9ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "UNKNOWN", "sim_iccid", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306236, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.920] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"} [2026-06-17 10:56:58.945] [DEBUG] QUERY OK db=24.8ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "UNKNOWN", "sim_imsi", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306237, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.945] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"} [2026-06-17 10:56:58.977] [DEBUG] QUERY OK db=31.3ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "UNKNOWN", "sim_iccid2", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306238, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.977] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:08Z", "value" => "UNKNOWN"} [2026-06-17 10:56:58.994] [DEBUG] QUERY OK db=16.5ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "UNKNOWN", "sim_imsi2", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:58.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306239, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:58.995] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:08Z", "value" => "6"} [2026-06-17 10:56:59.020] [DEBUG] QUERY OK db=24.9ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "6", "data_usage_mb", 39262, ~N[2026-06-17 10:56:58], ~N[2026-06-17 10:56:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:59.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306240, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:58], updated_at: ~N[2026-06-17 10:56:58]}} [2026-06-17 10:56:59.021] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:08Z", "value" => "0"} [2026-06-17 10:56:59.059] [DEBUG] QUERY OK db=35.6ms queue=1.5ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "0", "mobile_data_mb", 39262, ~N[2026-06-17 10:56:59], ~N[2026-06-17 10:56:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:59.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306241, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:59], updated_at: ~N[2026-06-17 10:56:59]}} [2026-06-17 10:56:59.060] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:08Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:56:59.084] [DEBUG] QUERY OK db=23.7ms queue=0.1ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:08Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39262, ~N[2026-06-17 10:56:59], ~N[2026-06-17 10:56:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:56:59.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306242, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:08Z", message: nil, status_log_id: 39262, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:56:59], updated_at: ~N[2026-06-17 10:56:59]}} [2026-06-17 10:56:59.098] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms queue=1.8ms idle=34.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:56:59.100] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:56:58]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:04.429] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:04.433] [INFO ] Incoming JSON payload: {"oid":"4bdfd5ea-0d11-462f-874c-0b16cf5c75e1","sn":"98251226730002","uploadTime":"2026-06-17T10:56:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"ram_free_mb","value":"748","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:04.436] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4bdfd5ea-0d11-462f-874c-0b16cf5c75e1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:14Z", "value" => "748"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:14Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:14Z", "vendor" => "morefun"} [2026-06-17 10:57:04.436] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:04.436] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:04.436] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:04.439] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.2ms idle=176.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:57:04.441] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=79.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-06-17 10:57:04.441] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:04.444] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:04.444] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:04.464] [DEBUG] QUERY OK source="tms_terminals" db=18.8ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:04.464] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:04.466] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.9ms idle=19.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:04.490] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms queue=0.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:04.520] [DEBUG] QUERY OK db=29.6ms idle=24.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4bdfd5ea-0d11-462f-874c-0b16cf5c75e1", "2026-06-17T10:56:14Z", ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:04.520] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39263, oid: "4bdfd5ea-0d11-462f-874c-0b16cf5c75e1", upload_time: "2026-06-17T10:56:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]} [2026-06-17 10:57:04.520] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:14Z", "value" => "morefun"} [2026-06-17 10:57:04.555] [DEBUG] QUERY OK db=34.5ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "morefun", "vendor", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306243, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.556] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:14Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:04.580] [DEBUG] QUERY OK db=24.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "kiosk_launcher", "model", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306244, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.580] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:14Z", "value" => "1.0"} [2026-06-17 10:57:04.606] [DEBUG] QUERY OK db=23.0ms queue=2.3ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "1.0", "app_version", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306245, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.607] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:14Z", "value" => "13"} [2026-06-17 10:57:04.641] [DEBUG] QUERY OK db=33.9ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "13", "android_version", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306246, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.642] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:14Z", "value" => "748"} [2026-06-17 10:57:04.667] [DEBUG] QUERY OK db=24.3ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "748", "ram_free_mb", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306247, itemkey: "ram_free_mb", value: "748", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.668] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:14Z", "value" => "WIFI"} [2026-06-17 10:57:04.696] [DEBUG] QUERY OK db=28.4ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "WIFI", "network_type", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306248, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.697] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:14Z", "value" => "true"} [2026-06-17 10:57:04.716] [DEBUG] QUERY OK db=18.2ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "true", "kiosk_active", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306249, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.716] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:14Z", "value" => ""} [2026-06-17 10:57:04.741] [DEBUG] QUERY OK db=24.5ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:14Z", "sim_operator", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306250, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.741] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"} [2026-06-17 10:57:04.768] [DEBUG] QUERY OK db=26.4ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "UNKNOWN", "sim_number", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306251, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.768] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"} [2026-06-17 10:57:04.802] [DEBUG] QUERY OK db=33.4ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "UNKNOWN", "sim_iccid", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306252, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.803] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"} [2026-06-17 10:57:04.839] [DEBUG] QUERY OK db=36.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "UNKNOWN", "sim_imsi", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306253, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.840] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"} [2026-06-17 10:57:04.868] [DEBUG] QUERY OK db=24.3ms queue=3.8ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "UNKNOWN", "sim_iccid2", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306254, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.869] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:14Z", "value" => "UNKNOWN"} [2026-06-17 10:57:04.907] [DEBUG] QUERY OK db=36.9ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "UNKNOWN", "sim_imsi2", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306255, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.910] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:14Z", "value" => "6"} [2026-06-17 10:57:04.946] [DEBUG] QUERY OK db=34.3ms queue=0.7ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "6", "data_usage_mb", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306256, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.946] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:14Z", "value" => "0"} [2026-06-17 10:57:04.980] [DEBUG] QUERY OK db=27.6ms queue=3.3ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:14Z", "0", "mobile_data_mb", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:04.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306257, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:04.981] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:05.003] [DEBUG] QUERY OK db=21.2ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39263, ~N[2026-06-17 10:57:04], ~N[2026-06-17 10:57:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:05.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306258, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:14Z", message: nil, status_log_id: 39263, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:04], updated_at: ~N[2026-06-17 10:57:04]}} [2026-06-17 10:57:05.012] [DEBUG] QUERY OK source="tms_terminals" db=8.0ms idle=26.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:05.023] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:04]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:10.522] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:10.522] [INFO ] Incoming JSON payload: {"oid":"e01708e3-3ee4-4b6d-afb0-8177113f9cf7","sn":"98251226730002","uploadTime":"2026-06-17T10:56:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"ram_free_mb","value":"755","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:10.525] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e01708e3-3ee4-4b6d-afb0-8177113f9cf7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:20Z", "value" => "755"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:20Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:20Z", "vendor" => "morefun"} [2026-06-17 10:57:10.526] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:10.526] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:10.526] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:10.527] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1133.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-06-17 10:57:10.528] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=130.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-06-17 10:57:10.528] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:10.532] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms queue=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:10.532] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:10.545] [DEBUG] QUERY OK source="tms_terminals" db=12.5ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:10.545] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:10.547] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=13.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:10.569] [DEBUG] QUERY OK source="tms_terminals" db=22.3ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:10.593] [DEBUG] QUERY OK db=23.6ms idle=23.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e01708e3-3ee4-4b6d-afb0-8177113f9cf7", "2026-06-17T10:56:20Z", ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:10.594] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39264, oid: "e01708e3-3ee4-4b6d-afb0-8177113f9cf7", upload_time: "2026-06-17T10:56:20Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]} [2026-06-17 10:57:10.594] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:20Z", "value" => "morefun"} [2026-06-17 10:57:10.632] [DEBUG] QUERY OK db=38.2ms queue=0.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "morefun", "vendor", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306259, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.633] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:20Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:10.657] [DEBUG] QUERY OK db=23.6ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "kiosk_launcher", "model", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306260, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.658] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:20Z", "value" => "1.0"} [2026-06-17 10:57:10.688] [DEBUG] QUERY OK db=29.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "1.0", "app_version", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306261, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.689] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:20Z", "value" => "13"} [2026-06-17 10:57:10.727] [DEBUG] QUERY OK db=37.5ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "13", "android_version", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306262, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.727] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:20Z", "value" => "755"} [2026-06-17 10:57:10.742] [DEBUG] QUERY OK db=14.6ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "755", "ram_free_mb", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306263, itemkey: "ram_free_mb", value: "755", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.743] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:20Z", "value" => "WIFI"} [2026-06-17 10:57:10.768] [DEBUG] QUERY OK db=23.6ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "WIFI", "network_type", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306264, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.768] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:20Z", "value" => "true"} [2026-06-17 10:57:10.805] [DEBUG] QUERY OK db=35.0ms queue=0.2ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "true", "kiosk_active", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306265, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.805] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:20Z", "value" => ""} [2026-06-17 10:57:10.830] [DEBUG] QUERY OK db=24.2ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:20Z", "sim_operator", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306266, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.834] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"} [2026-06-17 10:57:10.845] [DEBUG] QUERY OK db=10.8ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "UNKNOWN", "sim_number", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306267, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.846] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"} [2026-06-17 10:57:10.858] [DEBUG] QUERY OK db=11.4ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "UNKNOWN", "sim_iccid", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306268, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.858] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"} [2026-06-17 10:57:10.894] [DEBUG] QUERY OK db=35.8ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "UNKNOWN", "sim_imsi", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306269, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.895] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"} [2026-06-17 10:57:10.925] [DEBUG] QUERY OK db=28.3ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "UNKNOWN", "sim_iccid2", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306270, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.925] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:20Z", "value" => "UNKNOWN"} [2026-06-17 10:57:10.946] [DEBUG] QUERY OK db=17.5ms queue=1.3ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "UNKNOWN", "sim_imsi2", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306271, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.947] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:20Z", "value" => "6"} [2026-06-17 10:57:10.959] [DEBUG] QUERY OK db=11.7ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "6", "data_usage_mb", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306272, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.960] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:20Z", "value" => "0"} [2026-06-17 10:57:10.990] [DEBUG] QUERY OK db=29.5ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:20Z", "0", "mobile_data_mb", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:10.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306273, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:10.991] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:11.031] [DEBUG] QUERY OK db=39.0ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39264, ~N[2026-06-17 10:57:10], ~N[2026-06-17 10:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:11.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306274, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:20Z", message: nil, status_log_id: 39264, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:10], updated_at: ~N[2026-06-17 10:57:10]}} [2026-06-17 10:57:11.033] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:11.034] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:10]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:16.608] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:16.608] [INFO ] Incoming JSON payload: {"oid":"3024342f-43ac-43f0-85b2-fe70833c3ddc","sn":"98251226730002","uploadTime":"2026-06-17T10:56:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"ram_free_mb","value":"754","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:16.610] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3024342f-43ac-43f0-85b2-fe70833c3ddc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:26Z", "value" => "754"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:26Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:26Z", "vendor" => "morefun"} [2026-06-17 10:57:16.610] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:16.610] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:16.610] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:16.611] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1197.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:57:16.612] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=194.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-06-17 10:57:16.612] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:16.613] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:16.614] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:16.648] [DEBUG] QUERY OK source="tms_terminals" db=34.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:16.648] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:16.651] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=35.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:16.675] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:16.699] [DEBUG] QUERY OK db=23.6ms idle=24.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3024342f-43ac-43f0-85b2-fe70833c3ddc", "2026-06-17T10:56:26Z", ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:16.700] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39265, oid: "3024342f-43ac-43f0-85b2-fe70833c3ddc", upload_time: "2026-06-17T10:56:26Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]} [2026-06-17 10:57:16.700] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:26Z", "value" => "morefun"} [2026-06-17 10:57:16.728] [DEBUG] QUERY OK db=28.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "morefun", "vendor", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:16.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306275, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:16.729] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:26Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:16.761] [DEBUG] QUERY OK db=30.6ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "kiosk_launcher", "model", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:16.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306276, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:16.767] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:26Z", "value" => "1.0"} [2026-06-17 10:57:16.811] [DEBUG] QUERY OK db=42.4ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "1.0", "app_version", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:16.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306277, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:16.811] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:26Z", "value" => "13"} [2026-06-17 10:57:16.847] [DEBUG] QUERY OK db=34.2ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "13", "android_version", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:16.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306278, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:16.847] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:26Z", "value" => "754"} [2026-06-17 10:57:16.879] [DEBUG] QUERY OK db=31.7ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "754", "ram_free_mb", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:16.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306279, itemkey: "ram_free_mb", value: "754", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:16.880] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:26Z", "value" => "WIFI"} [2026-06-17 10:57:16.925] [DEBUG] QUERY OK db=44.4ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "WIFI", "network_type", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:16.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306280, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:16.925] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:26Z", "value" => "true"} [2026-06-17 10:57:16.956] [DEBUG] QUERY OK db=31.1ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "true", "kiosk_active", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:16.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306281, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:16.957] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:26Z", "value" => ""} [2026-06-17 10:57:16.981] [DEBUG] QUERY OK db=24.0ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:26Z", "sim_operator", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:16.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306282, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:16.981] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"} [2026-06-17 10:57:17.005] [DEBUG] QUERY OK db=23.2ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "UNKNOWN", "sim_number", 39265, ~N[2026-06-17 10:57:16], ~N[2026-06-17 10:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:17.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306283, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:16], updated_at: ~N[2026-06-17 10:57:16]}} [2026-06-17 10:57:17.005] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"} [2026-06-17 10:57:17.040] [DEBUG] QUERY OK db=33.9ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "UNKNOWN", "sim_iccid", 39265, ~N[2026-06-17 10:57:17], ~N[2026-06-17 10:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:17.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306284, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:17], updated_at: ~N[2026-06-17 10:57:17]}} [2026-06-17 10:57:17.040] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"} [2026-06-17 10:57:17.060] [DEBUG] QUERY OK db=19.7ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "UNKNOWN", "sim_imsi", 39265, ~N[2026-06-17 10:57:17], ~N[2026-06-17 10:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:17.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306285, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:17], updated_at: ~N[2026-06-17 10:57:17]}} [2026-06-17 10:57:17.061] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"} [2026-06-17 10:57:17.090] [DEBUG] QUERY OK db=29.2ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "UNKNOWN", "sim_iccid2", 39265, ~N[2026-06-17 10:57:17], ~N[2026-06-17 10:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:17.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306286, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:17], updated_at: ~N[2026-06-17 10:57:17]}} [2026-06-17 10:57:17.091] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:26Z", "value" => "UNKNOWN"} [2026-06-17 10:57:17.134] [DEBUG] QUERY OK db=43.0ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "UNKNOWN", "sim_imsi2", 39265, ~N[2026-06-17 10:57:17], ~N[2026-06-17 10:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:17.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306287, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:17], updated_at: ~N[2026-06-17 10:57:17]}} [2026-06-17 10:57:17.136] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:26Z", "value" => "6"} [2026-06-17 10:57:17.164] [DEBUG] QUERY OK db=26.8ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "6", "data_usage_mb", 39265, ~N[2026-06-17 10:57:17], ~N[2026-06-17 10:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:17.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306288, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:17], updated_at: ~N[2026-06-17 10:57:17]}} [2026-06-17 10:57:17.164] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:26Z", "value" => "0"} [2026-06-17 10:57:17.182] [DEBUG] QUERY OK db=17.6ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:26Z", "0", "mobile_data_mb", 39265, ~N[2026-06-17 10:57:17], ~N[2026-06-17 10:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:17.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306289, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:17], updated_at: ~N[2026-06-17 10:57:17]}} [2026-06-17 10:57:17.184] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:17.214] [DEBUG] QUERY OK db=28.2ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39265, ~N[2026-06-17 10:57:17], ~N[2026-06-17 10:57:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:17.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306290, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:26Z", message: nil, status_log_id: 39265, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:17], updated_at: ~N[2026-06-17 10:57:17]}} [2026-06-17 10:57:17.222] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=39.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:17.226] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:23.128] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:23.128] [INFO ] Incoming JSON payload: {"oid":"14ec07f2-83e1-40cf-bc87-a90fbf81fe41","sn":"98251226730002","uploadTime":"2026-06-17T10:56:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"ram_free_mb","value":"755","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56:32Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:23.129] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "14ec07f2-83e1-40cf-bc87-a90fbf81fe41", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:32Z", "value" => "755"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:32Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:32Z", "vendor" => "morefun"} [2026-06-17 10:57:23.130] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:23.130] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:23.130] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:23.131] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=1361.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-06-17 10:57:23.132] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=688.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.`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-06-17 10:57:23.132] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:23.134] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:23.134] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:23.155] [DEBUG] QUERY OK source="tms_terminals" db=21.3ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:23.156] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:23.156] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:23.182] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:23.215] [DEBUG] QUERY OK db=33.4ms idle=25.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "14ec07f2-83e1-40cf-bc87-a90fbf81fe41", "2026-06-17T10:56:32Z", ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:23.216] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39266, oid: "14ec07f2-83e1-40cf-bc87-a90fbf81fe41", upload_time: "2026-06-17T10:56:32Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]} [2026-06-17 10:57:23.216] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:32Z", "value" => "morefun"} [2026-06-17 10:57:23.238] [DEBUG] QUERY OK db=21.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "morefun", "vendor", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306291, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.238] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:32Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:23.257] [DEBUG] QUERY OK db=18.4ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "kiosk_launcher", "model", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306292, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.257] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:32Z", "value" => "1.0"} [2026-06-17 10:57:23.281] [DEBUG] QUERY OK db=23.1ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "1.0", "app_version", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306293, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.281] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:32Z", "value" => "13"} [2026-06-17 10:57:23.306] [DEBUG] QUERY OK db=24.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "13", "android_version", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306294, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.308] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:32Z", "value" => "755"} [2026-06-17 10:57:23.348] [DEBUG] QUERY OK db=39.8ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "755", "ram_free_mb", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306295, itemkey: "ram_free_mb", value: "755", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.349] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:32Z", "value" => "WIFI"} [2026-06-17 10:57:23.362] [DEBUG] QUERY OK db=13.2ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "WIFI", "network_type", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306296, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.363] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:32Z", "value" => "true"} [2026-06-17 10:57:23.381] [DEBUG] QUERY OK db=18.3ms idle=14.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "true", "kiosk_active", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306297, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.382] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:32Z", "value" => ""} [2026-06-17 10:57:23.417] [DEBUG] QUERY OK db=34.1ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:32Z", "sim_operator", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306298, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.418] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"} [2026-06-17 10:57:23.442] [DEBUG] QUERY OK db=23.7ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "UNKNOWN", "sim_number", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306299, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.442] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"} [2026-06-17 10:57:23.461] [DEBUG] QUERY OK db=17.8ms queue=0.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "UNKNOWN", "sim_iccid", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306300, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.461] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"} [2026-06-17 10:57:23.472] [DEBUG] QUERY OK db=10.5ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "UNKNOWN", "sim_imsi", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306301, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.472] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"} [2026-06-17 10:57:23.510] [DEBUG] QUERY OK db=37.0ms queue=0.4ms idle=12.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "UNKNOWN", "sim_iccid2", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306302, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.510] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:32Z", "value" => "UNKNOWN"} [2026-06-17 10:57:23.528] [DEBUG] QUERY OK db=16.9ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "UNKNOWN", "sim_imsi2", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306303, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.528] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:32Z", "value" => "6"} [2026-06-17 10:57:23.543] [DEBUG] QUERY OK db=14.6ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "6", "data_usage_mb", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306304, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.544] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:32Z", "value" => "0"} [2026-06-17 10:57:23.567] [DEBUG] QUERY OK db=23.1ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "0", "mobile_data_mb", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306305, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.568] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:23.603] [DEBUG] QUERY OK db=34.2ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39266, ~N[2026-06-17 10:57:23], ~N[2026-06-17 10:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:23.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306306, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:32Z", message: nil, status_log_id: 39266, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:23], updated_at: ~N[2026-06-17 10:57:23]}} [2026-06-17 10:57:23.606] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=37.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:23.606] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:23]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:29.038] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:29.038] [INFO ] Incoming JSON payload: {"oid":"75eeea7f-0946-49db-8558-ece509523fc3","sn":"98251226730002","uploadTime":"2026-06-17T10:56:38Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"ram_free_mb","value":"754","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:38Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56:38Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:29.041] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "75eeea7f-0946-49db-8558-ece509523fc3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:38Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:38Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:38Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:38Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:38Z", "value" => "754"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:38Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:38Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:38Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:38Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:38Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:38Z", "vendor" => "morefun"} [2026-06-17 10:57:29.041] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:29.041] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:29.042] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:29.043] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=1580.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-06-17 10:57:29.045] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=578.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-06-17 10:57:29.045] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:29.047] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:29.048] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:29.116] [DEBUG] QUERY OK source="tms_terminals" db=67.8ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:29], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:29.116] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:29.118] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=69.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:29.134] [DEBUG] QUERY OK source="tms_terminals" db=16.0ms queue=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:29], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:29.150] [DEBUG] QUERY OK db=15.4ms idle=17.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "75eeea7f-0946-49db-8558-ece509523fc3", "2026-06-17T10:56:38Z", ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:29.151] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39267, oid: "75eeea7f-0946-49db-8558-ece509523fc3", upload_time: "2026-06-17T10:56:38Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]} [2026-06-17 10:57:29.151] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:38Z", "value" => "morefun"} [2026-06-17 10:57:29.181] [DEBUG] QUERY OK db=27.8ms queue=0.1ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "morefun", "vendor", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306307, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.182] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:38Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:29.211] [DEBUG] QUERY OK db=28.6ms queue=0.1ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "kiosk_launcher", "model", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306308, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.211] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:38Z", "value" => "1.0"} [2026-06-17 10:57:29.227] [DEBUG] QUERY OK db=15.5ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "1.0", "app_version", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306309, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.228] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:38Z", "value" => "13"} [2026-06-17 10:57:29.244] [DEBUG] QUERY OK db=15.4ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "13", "android_version", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306310, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.245] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:38Z", "value" => "754"} [2026-06-17 10:57:29.268] [DEBUG] QUERY OK db=22.2ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "754", "ram_free_mb", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306311, itemkey: "ram_free_mb", value: "754", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.269] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:38Z", "value" => "WIFI"} [2026-06-17 10:57:29.292] [DEBUG] QUERY OK db=23.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "WIFI", "network_type", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306312, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.293] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:38Z", "value" => "true"} [2026-06-17 10:57:29.323] [DEBUG] QUERY OK db=29.1ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "true", "kiosk_active", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306313, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.323] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:38Z", "value" => ""} [2026-06-17 10:57:29.337] [DEBUG] QUERY OK db=13.6ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:38Z", "sim_operator", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306314, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.338] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"} [2026-06-17 10:57:29.355] [DEBUG] QUERY OK db=17.1ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "UNKNOWN", "sim_number", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306315, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.356] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"} [2026-06-17 10:57:29.377] [DEBUG] QUERY OK db=20.8ms queue=0.2ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "UNKNOWN", "sim_iccid", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306316, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.377] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"} [2026-06-17 10:57:29.400] [DEBUG] QUERY OK db=22.6ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "UNKNOWN", "sim_imsi", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306317, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.401] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"} [2026-06-17 10:57:29.428] [DEBUG] QUERY OK db=25.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "UNKNOWN", "sim_iccid2", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306318, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.428] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:38Z", "value" => "UNKNOWN"} [2026-06-17 10:57:29.441] [DEBUG] QUERY OK db=12.9ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "UNKNOWN", "sim_imsi2", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306319, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.442] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:38Z", "value" => "6"} [2026-06-17 10:57:29.460] [DEBUG] QUERY OK db=17.4ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "6", "data_usage_mb", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306320, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.461] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:38Z", "value" => "0"} [2026-06-17 10:57:29.486] [DEBUG] QUERY OK db=24.8ms queue=0.1ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "0", "mobile_data_mb", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306321, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.487] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:29.511] [DEBUG] QUERY OK db=23.1ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39267, ~N[2026-06-17 10:57:29], ~N[2026-06-17 10:57:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:29.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306322, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:38Z", message: nil, status_log_id: 39267, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:29], updated_at: ~N[2026-06-17 10:57:29]}} [2026-06-17 10:57:29.514] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=26.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:29.515] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:29]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:35.037] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:35.037] [INFO ] Incoming JSON payload: {"oid":"07c72161-dab3-4d8b-8bf7-e22112d5683a","sn":"98251226730002","uploadTime":"2026-06-17T10:56:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"ram_free_mb","value":"757","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:35.038] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "07c72161-dab3-4d8b-8bf7-e22112d5683a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:44Z", "value" => "757"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:44Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:44Z", "vendor" => "morefun"} [2026-06-17 10:57:35.038] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:35.038] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:35.038] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:35.040] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1557.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-06-17 10:57:35.041] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=555.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-06-17 10:57:35.041] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:35.042] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:35.043] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:35.098] [DEBUG] QUERY OK source="tms_terminals" db=54.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:35.098] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:35.099] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=55.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:35.133] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:35.151] [DEBUG] QUERY OK db=17.2ms idle=34.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "07c72161-dab3-4d8b-8bf7-e22112d5683a", "2026-06-17T10:56:44Z", ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:35.151] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39268, oid: "07c72161-dab3-4d8b-8bf7-e22112d5683a", upload_time: "2026-06-17T10:56:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]} [2026-06-17 10:57:35.151] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:44Z", "value" => "morefun"} [2026-06-17 10:57:35.183] [DEBUG] QUERY OK db=32.0ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "morefun", "vendor", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306323, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.184] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:44Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:35.207] [DEBUG] QUERY OK db=23.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "kiosk_launcher", "model", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306324, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.208] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:44Z", "value" => "1.0"} [2026-06-17 10:57:35.236] [DEBUG] QUERY OK db=27.9ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "1.0", "app_version", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306325, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.237] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:44Z", "value" => "13"} [2026-06-17 10:57:35.257] [DEBUG] QUERY OK db=19.8ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "13", "android_version", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306326, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.258] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:44Z", "value" => "757"} [2026-06-17 10:57:35.289] [DEBUG] QUERY OK db=31.4ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "757", "ram_free_mb", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306327, itemkey: "ram_free_mb", value: "757", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.290] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:44Z", "value" => "WIFI"} [2026-06-17 10:57:35.313] [DEBUG] QUERY OK db=23.1ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "WIFI", "network_type", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306328, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.314] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:44Z", "value" => "true"} [2026-06-17 10:57:35.337] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "true", "kiosk_active", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306329, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.338] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:44Z", "value" => ""} [2026-06-17 10:57:35.361] [DEBUG] QUERY OK db=22.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:44Z", "sim_operator", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306330, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.362] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"} [2026-06-17 10:57:35.373] [DEBUG] QUERY OK db=11.5ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "UNKNOWN", "sim_number", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306331, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.375] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"} [2026-06-17 10:57:35.404] [DEBUG] QUERY OK db=28.9ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "UNKNOWN", "sim_iccid", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306332, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.407] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"} [2026-06-17 10:57:35.432] [DEBUG] QUERY OK db=24.2ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "UNKNOWN", "sim_imsi", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306333, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.432] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"} [2026-06-17 10:57:35.466] [DEBUG] QUERY OK db=32.7ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "UNKNOWN", "sim_iccid2", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306334, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.466] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:44Z", "value" => "UNKNOWN"} [2026-06-17 10:57:35.489] [DEBUG] QUERY OK db=22.4ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "UNKNOWN", "sim_imsi2", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306335, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.490] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:44Z", "value" => "6"} [2026-06-17 10:57:35.510] [DEBUG] QUERY OK db=20.0ms idle=3.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "6", "data_usage_mb", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306336, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.512] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:44Z", "value" => "0"} [2026-06-17 10:57:35.548] [DEBUG] QUERY OK db=36.2ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:44Z", "0", "mobile_data_mb", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306337, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.550] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:35.588] [DEBUG] QUERY OK db=36.0ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39268, ~N[2026-06-17 10:57:35], ~N[2026-06-17 10:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:35.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306338, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:44Z", message: nil, status_log_id: 39268, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:35], updated_at: ~N[2026-06-17 10:57:35]}} [2026-06-17 10:57:35.590] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=41.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:35.591] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:35]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:41.395] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:41.395] [INFO ] Incoming JSON payload: {"oid":"bb87a070-94e2-44ec-a1f2-b9717374072d","sn":"98251226730002","uploadTime":"2026-06-17T10:56:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"ram_free_mb","value":"759","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56:50Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:41.397] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bb87a070-94e2-44ec-a1f2-b9717374072d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:50Z", "value" => "759"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:50Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:50Z", "vendor" => "morefun"} [2026-06-17 10:57:41.398] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:41.398] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:41.398] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:41.398] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=891.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:57:41.399] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=139.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.`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-06-17 10:57:41.399] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:41.400] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:41.400] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:41.427] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:41.427] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:41.428] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.6ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:41.459] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:41.490] [DEBUG] QUERY OK db=31.0ms idle=30.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "bb87a070-94e2-44ec-a1f2-b9717374072d", "2026-06-17T10:56:50Z", ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:41.491] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39269, oid: "bb87a070-94e2-44ec-a1f2-b9717374072d", upload_time: "2026-06-17T10:56:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]} [2026-06-17 10:57:41.491] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:50Z", "value" => "morefun"} [2026-06-17 10:57:41.513] [DEBUG] QUERY OK db=21.3ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "morefun", "vendor", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306339, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.513] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:50Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:41.537] [DEBUG] QUERY OK db=23.1ms idle=4.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "kiosk_launcher", "model", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306340, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.537] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:50Z", "value" => "1.0"} [2026-06-17 10:57:41.560] [DEBUG] QUERY OK db=22.7ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "1.0", "app_version", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306341, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.560] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:50Z", "value" => "13"} [2026-06-17 10:57:41.596] [DEBUG] QUERY OK db=34.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "13", "android_version", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306342, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.596] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:50Z", "value" => "759"} [2026-06-17 10:57:41.618] [DEBUG] QUERY OK db=21.7ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "759", "ram_free_mb", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306343, itemkey: "ram_free_mb", value: "759", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.618] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:50Z", "value" => "WIFI"} [2026-06-17 10:57:41.636] [DEBUG] QUERY OK db=16.9ms queue=0.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "WIFI", "network_type", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306344, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.636] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:50Z", "value" => "true"} [2026-06-17 10:57:41.661] [DEBUG] QUERY OK db=24.5ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "true", "kiosk_active", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306345, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.663] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:50Z", "value" => ""} [2026-06-17 10:57:41.695] [DEBUG] QUERY OK db=31.2ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:50Z", "sim_operator", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306346, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.695] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"} [2026-06-17 10:57:41.721] [DEBUG] QUERY OK db=24.8ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "UNKNOWN", "sim_number", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306347, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.721] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"} [2026-06-17 10:57:41.742] [DEBUG] QUERY OK db=20.6ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "UNKNOWN", "sim_iccid", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306348, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.743] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"} [2026-06-17 10:57:41.769] [DEBUG] QUERY OK db=24.8ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "UNKNOWN", "sim_imsi", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306349, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.769] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"} [2026-06-17 10:57:41.799] [DEBUG] QUERY OK db=29.5ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "UNKNOWN", "sim_iccid2", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306350, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.799] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:50Z", "value" => "UNKNOWN"} [2026-06-17 10:57:41.824] [DEBUG] QUERY OK db=23.1ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "UNKNOWN", "sim_imsi2", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306351, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.825] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:50Z", "value" => "6"} [2026-06-17 10:57:41.849] [DEBUG] QUERY OK db=23.7ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "6", "data_usage_mb", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306352, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.849] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:50Z", "value" => "0"} [2026-06-17 10:57:41.881] [DEBUG] QUERY OK db=31.4ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "0", "mobile_data_mb", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306353, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.883] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:41.917] [DEBUG] QUERY OK db=33.6ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39269, ~N[2026-06-17 10:57:41], ~N[2026-06-17 10:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:41.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306354, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:50Z", message: nil, status_log_id: 39269, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:41], updated_at: ~N[2026-06-17 10:57:41]}} [2026-06-17 10:57:41.919] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=36.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:41.919] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:41]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:47.302] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:47.302] [INFO ] Incoming JSON payload: {"oid":"5372ee00-67fe-4538-b578-7d7ee2afc932","sn":"98251226730002","uploadTime":"2026-06-17T10:56:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"ram_free_mb","value":"756","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:56:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:56:57Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:47.303] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5372ee00-67fe-4538-b578-7d7ee2afc932", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:57Z", "value" => "756"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:57Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:56:57Z", "vendor" => "morefun"} [2026-06-17 10:57:47.303] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:47.303] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:47.303] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:47.304] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=778.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-06-17 10:57:47.305] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=45.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-06-17 10:57:47.305] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:47.307] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:47.307] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:47.327] [DEBUG] QUERY OK source="tms_terminals" db=19.0ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:47.328] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:47.330] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=21.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:47.362] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms queue=0.1ms idle=6.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:47.396] [DEBUG] QUERY OK db=33.4ms idle=32.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5372ee00-67fe-4538-b578-7d7ee2afc932", "2026-06-17T10:56:57Z", ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:47.397] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39270, oid: "5372ee00-67fe-4538-b578-7d7ee2afc932", upload_time: "2026-06-17T10:56:57Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]} [2026-06-17 10:57:47.398] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:56:57Z", "value" => "morefun"} [2026-06-17 10:57:47.421] [DEBUG] QUERY OK db=23.5ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "morefun", "vendor", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306355, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.422] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:56:57Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:47.441] [DEBUG] QUERY OK db=18.9ms queue=0.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "kiosk_launcher", "model", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306356, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.442] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:56:57Z", "value" => "1.0"} [2026-06-17 10:57:47.465] [DEBUG] QUERY OK db=22.7ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "1.0", "app_version", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306357, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.465] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:56:57Z", "value" => "13"} [2026-06-17 10:57:47.489] [DEBUG] QUERY OK db=23.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "13", "android_version", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306358, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.489] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:56:57Z", "value" => "756"} [2026-06-17 10:57:47.527] [DEBUG] QUERY OK db=37.6ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "756", "ram_free_mb", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306359, itemkey: "ram_free_mb", value: "756", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.527] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:56:57Z", "value" => "WIFI"} [2026-06-17 10:57:47.551] [DEBUG] QUERY OK db=23.5ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "WIFI", "network_type", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306360, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.552] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:56:57Z", "value" => "true"} [2026-06-17 10:57:47.576] [DEBUG] QUERY OK db=22.3ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "true", "kiosk_active", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306361, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.577] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:56:57Z", "value" => ""} [2026-06-17 10:57:47.609] [DEBUG] QUERY OK db=31.0ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:56:57Z", "sim_operator", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306362, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.609] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"} [2026-06-17 10:57:47.633] [DEBUG] QUERY OK db=22.7ms queue=0.2ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "UNKNOWN", "sim_number", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306363, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.633] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"} [2026-06-17 10:57:47.657] [DEBUG] QUERY OK db=23.1ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "UNKNOWN", "sim_iccid", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306364, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.658] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"} [2026-06-17 10:57:47.713] [DEBUG] QUERY OK db=55.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "UNKNOWN", "sim_imsi", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306365, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.714] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"} [2026-06-17 10:57:47.741] [DEBUG] QUERY OK db=27.1ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "UNKNOWN", "sim_iccid2", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306366, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.742] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:56:57Z", "value" => "UNKNOWN"} [2026-06-17 10:57:47.765] [DEBUG] QUERY OK db=23.2ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "UNKNOWN", "sim_imsi2", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306367, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.766] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:56:57Z", "value" => "6"} [2026-06-17 10:57:47.794] [DEBUG] QUERY OK db=27.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "6", "data_usage_mb", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306368, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.794] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:56:57Z", "value" => "0"} [2026-06-17 10:57:47.829] [DEBUG] QUERY OK db=34.4ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "0", "mobile_data_mb", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306369, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.831] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:56:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:47.864] [DEBUG] QUERY OK db=29.9ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:56:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39270, ~N[2026-06-17 10:57:47], ~N[2026-06-17 10:57:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:47.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306370, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:56:57Z", message: nil, status_log_id: 39270, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:47], updated_at: ~N[2026-06-17 10:57:47]}} [2026-06-17 10:57:47.867] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:47.868] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:47]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:53.389] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:53.389] [INFO ] Incoming JSON payload: {"oid":"b78dfcb3-802b-4635-9f01-5e3aa898fd00","sn":"98251226730002","uploadTime":"2026-06-17T10:57:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"ram_free_mb","value":"755","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:57:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:03Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:53.390] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b78dfcb3-802b-4635-9f01-5e3aa898fd00", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:03Z", "value" => "755"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:03Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:03Z", "vendor" => "morefun"} [2026-06-17 10:57:53.390] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:53.390] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:53.390] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:53.392] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms queue=0.1ms idle=1128.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-06-17 10:57:53.393] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.3ms idle=845.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-06-17 10:57:53.394] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:53.395] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:53.395] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:53.419] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:53.421] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:53.424] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=0.1ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:53.448] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:53.480] [DEBUG] QUERY OK db=30.9ms queue=0.1ms idle=24.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b78dfcb3-802b-4635-9f01-5e3aa898fd00", "2026-06-17T10:57:03Z", ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:53.481] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39271, oid: "b78dfcb3-802b-4635-9f01-5e3aa898fd00", upload_time: "2026-06-17T10:57:03Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]} [2026-06-17 10:57:53.481] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:03Z", "value" => "morefun"} [2026-06-17 10:57:53.511] [DEBUG] QUERY OK db=29.2ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "morefun", "vendor", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306371, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.512] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:03Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:53.540] [DEBUG] QUERY OK db=27.7ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "kiosk_launcher", "model", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306372, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.540] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:03Z", "value" => "1.0"} [2026-06-17 10:57:53.556] [DEBUG] QUERY OK db=14.9ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "1.0", "app_version", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306373, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.556] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:03Z", "value" => "13"} [2026-06-17 10:57:53.580] [DEBUG] QUERY OK db=23.1ms idle=4.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "13", "android_version", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306374, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.581] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:03Z", "value" => "755"} [2026-06-17 10:57:53.613] [DEBUG] QUERY OK db=31.8ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "755", "ram_free_mb", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306375, itemkey: "ram_free_mb", value: "755", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.613] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:03Z", "value" => "WIFI"} [2026-06-17 10:57:53.636] [DEBUG] QUERY OK db=22.6ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "WIFI", "network_type", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306376, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.637] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:03Z", "value" => "true"} [2026-06-17 10:57:53.670] [DEBUG] QUERY OK db=32.5ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "true", "kiosk_active", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306377, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.670] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:03Z", "value" => ""} [2026-06-17 10:57:53.710] [DEBUG] QUERY OK db=39.2ms queue=0.9ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:03Z", "sim_operator", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306378, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.711] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"} [2026-06-17 10:57:53.736] [DEBUG] QUERY OK db=24.4ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "UNKNOWN", "sim_number", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306379, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.737] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"} [2026-06-17 10:57:53.770] [DEBUG] QUERY OK db=32.3ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "UNKNOWN", "sim_iccid", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306380, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.770] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"} [2026-06-17 10:57:53.790] [DEBUG] QUERY OK db=18.6ms queue=0.7ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "UNKNOWN", "sim_imsi", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306381, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.791] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"} [2026-06-17 10:57:53.813] [DEBUG] QUERY OK db=20.9ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "UNKNOWN", "sim_iccid2", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306382, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.814] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:03Z", "value" => "UNKNOWN"} [2026-06-17 10:57:53.839] [DEBUG] QUERY OK db=23.9ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "UNKNOWN", "sim_imsi2", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306383, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.839] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:03Z", "value" => "6"} [2026-06-17 10:57:53.873] [DEBUG] QUERY OK db=33.3ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "6", "data_usage_mb", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306384, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.873] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:03Z", "value" => "0"} [2026-06-17 10:57:53.897] [DEBUG] QUERY OK db=23.2ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "0", "mobile_data_mb", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306385, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.900] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:57:53.920] [DEBUG] QUERY OK db=19.6ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39271, ~N[2026-06-17 10:57:53], ~N[2026-06-17 10:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:53.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306386, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:03Z", message: nil, status_log_id: 39271, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:53], updated_at: ~N[2026-06-17 10:57:53]}} [2026-06-17 10:57:53.925] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=27.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:57:53.929] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:53]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:57:59.475] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:57:59.475] [INFO ] Incoming JSON payload: {"oid":"59e695c5-1cf7-438c-9fa8-631680d658e4","sn":"98251226730002","uploadTime":"2026-06-17T10:57:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"ram_free_mb","value":"754","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:57:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:09Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:57:59.476] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "59e695c5-1cf7-438c-9fa8-631680d658e4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:09Z", "value" => "754"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:09Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:09Z", "vendor" => "morefun"} [2026-06-17 10:57:59.476] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:57:59.476] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:57:59.477] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:57:59.478] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=886.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-06-17 10:57:59.480] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=218.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-06-17 10:57:59.480] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:57:59.483] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:57:59.486] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:57:59.506] [DEBUG] QUERY OK source="tms_terminals" db=19.3ms idle=6.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:57:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:57:59.506] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:57:59.509] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:57:59.542] [DEBUG] QUERY OK source="tms_terminals" db=31.8ms queue=0.5ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:57:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:57:59.566] [DEBUG] QUERY OK db=23.3ms idle=33.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "59e695c5-1cf7-438c-9fa8-631680d658e4", "2026-06-17T10:57:09Z", ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:57:59.566] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39272, oid: "59e695c5-1cf7-438c-9fa8-631680d658e4", upload_time: "2026-06-17T10:57:09Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]} [2026-06-17 10:57:59.566] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:09Z", "value" => "morefun"} [2026-06-17 10:57:59.601] [DEBUG] QUERY OK db=34.0ms queue=0.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "morefun", "vendor", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306387, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.602] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:09Z", "value" => "kiosk_launcher"} [2026-06-17 10:57:59.620] [DEBUG] QUERY OK db=18.2ms idle=7.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "kiosk_launcher", "model", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306388, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.621] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:09Z", "value" => "1.0"} [2026-06-17 10:57:59.665] [DEBUG] QUERY OK db=41.9ms queue=2.4ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "1.0", "app_version", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306389, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.666] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:09Z", "value" => "13"} [2026-06-17 10:57:59.700] [DEBUG] QUERY OK db=33.6ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "13", "android_version", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306390, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.700] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:09Z", "value" => "754"} [2026-06-17 10:57:59.720] [DEBUG] QUERY OK db=11.2ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "754", "ram_free_mb", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306391, itemkey: "ram_free_mb", value: "754", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.729] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:09Z", "value" => "WIFI"} [2026-06-17 10:57:59.757] [DEBUG] QUERY OK db=25.6ms queue=2.1ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "WIFI", "network_type", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306392, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.758] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:09Z", "value" => "true"} [2026-06-17 10:57:59.800] [DEBUG] QUERY OK db=38.1ms queue=0.4ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "true", "kiosk_active", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306393, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.804] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:09Z", "value" => ""} [2026-06-17 10:57:59.823] [DEBUG] QUERY OK db=17.7ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:09Z", "sim_operator", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306394, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.823] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"} [2026-06-17 10:57:59.863] [DEBUG] QUERY OK db=38.2ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "UNKNOWN", "sim_number", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306395, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.863] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"} [2026-06-17 10:57:59.900] [DEBUG] QUERY OK db=34.4ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "UNKNOWN", "sim_iccid", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306396, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.901] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"} [2026-06-17 10:57:59.922] [DEBUG] QUERY OK db=20.5ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "UNKNOWN", "sim_imsi", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.923] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306397, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.924] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"} [2026-06-17 10:57:59.946] [DEBUG] QUERY OK db=19.9ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "UNKNOWN", "sim_iccid2", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306398, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.947] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:09Z", "value" => "UNKNOWN"} [2026-06-17 10:57:59.980] [DEBUG] QUERY OK db=32.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "UNKNOWN", "sim_imsi2", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:57:59.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306399, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:57:59.982] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:09Z", "value" => "6"} [2026-06-17 10:58:00.010] [DEBUG] QUERY OK db=28.0ms queue=0.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "6", "data_usage_mb", 39272, ~N[2026-06-17 10:57:59], ~N[2026-06-17 10:57:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:00.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306400, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:57:59], updated_at: ~N[2026-06-17 10:57:59]}} [2026-06-17 10:58:00.011] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:09Z", "value" => "0"} [2026-06-17 10:58:00.028] [DEBUG] QUERY OK db=13.9ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "0", "mobile_data_mb", 39272, ~N[2026-06-17 10:58:00], ~N[2026-06-17 10:58:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:00.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306401, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:00], updated_at: ~N[2026-06-17 10:58:00]}} [2026-06-17 10:58:00.029] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:00.057] [DEBUG] QUERY OK db=27.1ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39272, ~N[2026-06-17 10:58:00], ~N[2026-06-17 10:58:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:00.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306402, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:09Z", message: nil, status_log_id: 39272, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:00], updated_at: ~N[2026-06-17 10:58:00]}} [2026-06-17 10:58:00.061] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=30.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:00.064] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:57:59]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:05.585] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:05.586] [INFO ] Incoming JSON payload: {"oid":"5668f9d2-d588-4506-9d29-20a6a46dfa10","sn":"98251226730002","uploadTime":"2026-06-17T10:57:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"ram_free_mb","value":"754","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:57:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:15Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:58:05.587] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5668f9d2-d588-4506-9d29-20a6a46dfa10", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:15Z", "value" => "754"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:15Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:15Z", "vendor" => "morefun"} [2026-06-17 10:58:05.587] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:05.587] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:05.587] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:05.596] [DEBUG] QUERY OK source="parameter_templates" db=9.0ms queue=0.1ms idle=1128.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-06-17 10:58:05.597] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=925.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-06-17 10:58:05.597] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:05.605] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:05.605] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:05.626] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms idle=8.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:05.626] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:05.631] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms idle=21.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:05.667] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms queue=0.1ms idle=7.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:05.694] [DEBUG] QUERY OK db=24.4ms idle=37.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5668f9d2-d588-4506-9d29-20a6a46dfa10", "2026-06-17T10:57:15Z", ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:05.694] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39273, oid: "5668f9d2-d588-4506-9d29-20a6a46dfa10", upload_time: "2026-06-17T10:57:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]} [2026-06-17 10:58:05.694] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:15Z", "value" => "morefun"} [2026-06-17 10:58:05.721] [DEBUG] QUERY OK db=26.7ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "morefun", "vendor", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306403, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.723] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:15Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:05.758] [DEBUG] QUERY OK db=34.5ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "kiosk_launcher", "model", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306404, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.758] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:15Z", "value" => "1.0"} [2026-06-17 10:58:05.791] [DEBUG] QUERY OK db=28.4ms queue=0.4ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "1.0", "app_version", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306405, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.791] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:15Z", "value" => "13"} [2026-06-17 10:58:05.823] [DEBUG] QUERY OK db=31.7ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "13", "android_version", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306406, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.824] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:15Z", "value" => "754"} [2026-06-17 10:58:05.847] [DEBUG] QUERY OK db=22.7ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "754", "ram_free_mb", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306407, itemkey: "ram_free_mb", value: "754", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.849] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:15Z", "value" => "WIFI"} [2026-06-17 10:58:05.877] [DEBUG] QUERY OK db=28.0ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "WIFI", "network_type", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306408, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.877] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:15Z", "value" => "true"} [2026-06-17 10:58:05.905] [DEBUG] QUERY OK db=25.2ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "true", "kiosk_active", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306409, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.905] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:15Z", "value" => ""} [2026-06-17 10:58:05.938] [DEBUG] QUERY OK db=32.5ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:15Z", "sim_operator", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306410, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.938] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"} [2026-06-17 10:58:05.977] [DEBUG] QUERY OK db=38.2ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "UNKNOWN", "sim_number", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:05.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306411, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:05.977] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"} [2026-06-17 10:58:05.998] [DEBUG] QUERY OK db=20.4ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "UNKNOWN", "sim_iccid", 39273, ~N[2026-06-17 10:58:05], ~N[2026-06-17 10:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:06.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306412, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:05], updated_at: ~N[2026-06-17 10:58:05]}} [2026-06-17 10:58:06.001] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"} [2026-06-17 10:58:06.032] [DEBUG] QUERY OK db=30.9ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "UNKNOWN", "sim_imsi", 39273, ~N[2026-06-17 10:58:06], ~N[2026-06-17 10:58:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:06.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306413, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:06], updated_at: ~N[2026-06-17 10:58:06]}} [2026-06-17 10:58:06.035] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"} [2026-06-17 10:58:06.061] [DEBUG] QUERY OK db=25.5ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "UNKNOWN", "sim_iccid2", 39273, ~N[2026-06-17 10:58:06], ~N[2026-06-17 10:58:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:06.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306414, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:06], updated_at: ~N[2026-06-17 10:58:06]}} [2026-06-17 10:58:06.063] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:15Z", "value" => "UNKNOWN"} [2026-06-17 10:58:06.093] [DEBUG] QUERY OK db=28.9ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "UNKNOWN", "sim_imsi2", 39273, ~N[2026-06-17 10:58:06], ~N[2026-06-17 10:58:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:06.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306415, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:06], updated_at: ~N[2026-06-17 10:58:06]}} [2026-06-17 10:58:06.094] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:15Z", "value" => "6"} [2026-06-17 10:58:06.124] [DEBUG] QUERY OK db=30.4ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "6", "data_usage_mb", 39273, ~N[2026-06-17 10:58:06], ~N[2026-06-17 10:58:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:06.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306416, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:06], updated_at: ~N[2026-06-17 10:58:06]}} [2026-06-17 10:58:06.125] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:15Z", "value" => "0"} [2026-06-17 10:58:06.163] [DEBUG] QUERY OK db=32.7ms queue=4.8ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "0", "mobile_data_mb", 39273, ~N[2026-06-17 10:58:06], ~N[2026-06-17 10:58:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:06.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306417, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:06], updated_at: ~N[2026-06-17 10:58:06]}} [2026-06-17 10:58:06.168] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:06.202] [DEBUG] QUERY OK db=31.6ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39273, ~N[2026-06-17 10:58:06], ~N[2026-06-17 10:58:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:06.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306418, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:15Z", message: nil, status_log_id: 39273, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:06], updated_at: ~N[2026-06-17 10:58:06]}} [2026-06-17 10:58:06.207] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=43.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:06.208] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:05]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:11.661] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:11.661] [INFO ] Incoming JSON payload: {"oid":"b3387a7f-f16f-4b25-a373-c69c15999b57","sn":"98251226730002","uploadTime":"2026-06-17T10:57:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"ram_free_mb","value":"753","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:57:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:21Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:58:11.663] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b3387a7f-f16f-4b25-a373-c69c15999b57", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:21Z", "value" => "753"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:21Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:21Z", "vendor" => "morefun"} [2026-06-17 10:58:11.663] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:11.663] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:11.664] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:11.666] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=959.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:58:11.666] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=396.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-06-17 10:58:11.666] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:11.670] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:11.670] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:11.697] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=5.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:11.697] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:11.698] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:11.734] [DEBUG] QUERY OK source="tms_terminals" db=35.3ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:11.758] [DEBUG] QUERY OK db=21.7ms idle=27.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b3387a7f-f16f-4b25-a373-c69c15999b57", "2026-06-17T10:57:21Z", ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:11.758] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39274, oid: "b3387a7f-f16f-4b25-a373-c69c15999b57", upload_time: "2026-06-17T10:57:21Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]} [2026-06-17 10:58:11.758] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:21Z", "value" => "morefun"} [2026-06-17 10:58:11.777] [DEBUG] QUERY OK db=18.3ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "morefun", "vendor", 39274, ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:11.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306419, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]}} [2026-06-17 10:58:11.777] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:21Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:11.814] [DEBUG] QUERY OK db=33.9ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "kiosk_launcher", "model", 39274, ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:11.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306420, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]}} [2026-06-17 10:58:11.814] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:21Z", "value" => "1.0"} [2026-06-17 10:58:11.847] [DEBUG] QUERY OK db=31.4ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "1.0", "app_version", 39274, ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:11.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306421, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]}} [2026-06-17 10:58:11.848] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:21Z", "value" => "13"} [2026-06-17 10:58:11.877] [DEBUG] QUERY OK db=28.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "13", "android_version", 39274, ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:11.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306422, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]}} [2026-06-17 10:58:11.877] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:21Z", "value" => "753"} [2026-06-17 10:58:11.911] [DEBUG] QUERY OK db=23.7ms queue=3.8ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "753", "ram_free_mb", 39274, ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:11.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306423, itemkey: "ram_free_mb", value: "753", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]}} [2026-06-17 10:58:11.911] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:21Z", "value" => "WIFI"} [2026-06-17 10:58:11.936] [DEBUG] QUERY OK db=24.1ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "WIFI", "network_type", 39274, ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:11.936] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306424, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]}} [2026-06-17 10:58:11.936] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:21Z", "value" => "true"} [2026-06-17 10:58:11.973] [DEBUG] QUERY OK db=36.5ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "true", "kiosk_active", 39274, ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:11.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306425, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]}} [2026-06-17 10:58:11.975] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:21Z", "value" => ""} [2026-06-17 10:58:11.997] [DEBUG] QUERY OK db=21.4ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:21Z", "sim_operator", 39274, ~N[2026-06-17 10:58:11], ~N[2026-06-17 10:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306426, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:11], updated_at: ~N[2026-06-17 10:58:11]}} [2026-06-17 10:58:12.000] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"} [2026-06-17 10:58:12.022] [DEBUG] QUERY OK db=21.6ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "UNKNOWN", "sim_number", 39274, ~N[2026-06-17 10:58:12], ~N[2026-06-17 10:58:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306427, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:12], updated_at: ~N[2026-06-17 10:58:12]}} [2026-06-17 10:58:12.022] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"} [2026-06-17 10:58:12.046] [DEBUG] QUERY OK db=23.1ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "UNKNOWN", "sim_iccid", 39274, ~N[2026-06-17 10:58:12], ~N[2026-06-17 10:58:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306428, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:12], updated_at: ~N[2026-06-17 10:58:12]}} [2026-06-17 10:58:12.048] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"} [2026-06-17 10:58:12.081] [DEBUG] QUERY OK db=32.7ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "UNKNOWN", "sim_imsi", 39274, ~N[2026-06-17 10:58:12], ~N[2026-06-17 10:58:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306429, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:12], updated_at: ~N[2026-06-17 10:58:12]}} [2026-06-17 10:58:12.082] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"} [2026-06-17 10:58:12.112] [DEBUG] QUERY OK db=29.5ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "UNKNOWN", "sim_iccid2", 39274, ~N[2026-06-17 10:58:12], ~N[2026-06-17 10:58:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306430, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:12], updated_at: ~N[2026-06-17 10:58:12]}} [2026-06-17 10:58:12.112] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:21Z", "value" => "UNKNOWN"} [2026-06-17 10:58:12.157] [DEBUG] QUERY OK db=42.7ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "UNKNOWN", "sim_imsi2", 39274, ~N[2026-06-17 10:58:12], ~N[2026-06-17 10:58:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306431, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:12], updated_at: ~N[2026-06-17 10:58:12]}} [2026-06-17 10:58:12.158] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:21Z", "value" => "6"} [2026-06-17 10:58:12.197] [DEBUG] QUERY OK db=38.9ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "6", "data_usage_mb", 39274, ~N[2026-06-17 10:58:12], ~N[2026-06-17 10:58:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306432, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:12], updated_at: ~N[2026-06-17 10:58:12]}} [2026-06-17 10:58:12.198] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:21Z", "value" => "0"} [2026-06-17 10:58:12.234] [DEBUG] QUERY OK db=36.4ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "0", "mobile_data_mb", 39274, ~N[2026-06-17 10:58:12], ~N[2026-06-17 10:58:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306433, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:12], updated_at: ~N[2026-06-17 10:58:12]}} [2026-06-17 10:58:12.235] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:12.281] [DEBUG] QUERY OK db=44.0ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39274, ~N[2026-06-17 10:58:12], ~N[2026-06-17 10:58:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:12.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306434, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:21Z", message: nil, status_log_id: 39274, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:12], updated_at: ~N[2026-06-17 10:58:12]}} [2026-06-17 10:58:12.284] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=49.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:12.286] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:11]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:17.749] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:17.749] [INFO ] Incoming JSON payload: {"oid":"1c916282-f982-4a65-a25c-291cba5e8dba","sn":"98251226730002","uploadTime":"2026-06-17T10:57:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"ram_free_mb","value":"753","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:57:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:27Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:58:17.751] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1c916282-f982-4a65-a25c-291cba5e8dba", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:27Z", "value" => "753"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:27Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:27Z", "vendor" => "morefun"} [2026-06-17 10:58:17.751] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:17.751] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:17.751] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:17.752] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=480.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:58:17.753] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=22.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-06-17 10:58:17.753] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:17.754] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:17.754] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:17.779] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:17.779] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:17.780] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:17.803] [DEBUG] QUERY OK source="tms_terminals" db=22.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:17.818] [DEBUG] QUERY OK db=13.7ms idle=23.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1c916282-f982-4a65-a25c-291cba5e8dba", "2026-06-17T10:57:27Z", ~N[2026-06-17 10:58:17], ~N[2026-06-17 10:58:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:17.818] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39275, oid: "1c916282-f982-4a65-a25c-291cba5e8dba", upload_time: "2026-06-17T10:57:27Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:17], updated_at: ~N[2026-06-17 10:58:17]} [2026-06-17 10:58:17.818] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:27Z", "value" => "morefun"} [2026-06-17 10:58:17.845] [DEBUG] QUERY OK db=26.5ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "morefun", "vendor", 39275, ~N[2026-06-17 10:58:17], ~N[2026-06-17 10:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:17.845] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306435, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:17], updated_at: ~N[2026-06-17 10:58:17]}} [2026-06-17 10:58:17.846] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:27Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:17.871] [DEBUG] QUERY OK db=24.7ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "kiosk_launcher", "model", 39275, ~N[2026-06-17 10:58:17], ~N[2026-06-17 10:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:17.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306436, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:17], updated_at: ~N[2026-06-17 10:58:17]}} [2026-06-17 10:58:17.871] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:27Z", "value" => "1.0"} [2026-06-17 10:58:17.895] [DEBUG] QUERY OK db=23.2ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "1.0", "app_version", 39275, ~N[2026-06-17 10:58:17], ~N[2026-06-17 10:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:17.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306437, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:17], updated_at: ~N[2026-06-17 10:58:17]}} [2026-06-17 10:58:17.895] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:27Z", "value" => "13"} [2026-06-17 10:58:17.920] [DEBUG] QUERY OK db=23.7ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "13", "android_version", 39275, ~N[2026-06-17 10:58:17], ~N[2026-06-17 10:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:17.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306438, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:17], updated_at: ~N[2026-06-17 10:58:17]}} [2026-06-17 10:58:17.920] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:27Z", "value" => "753"} [2026-06-17 10:58:17.945] [DEBUG] QUERY OK db=24.3ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "753", "ram_free_mb", 39275, ~N[2026-06-17 10:58:17], ~N[2026-06-17 10:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:17.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306439, itemkey: "ram_free_mb", value: "753", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:17], updated_at: ~N[2026-06-17 10:58:17]}} [2026-06-17 10:58:17.945] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:27Z", "value" => "WIFI"} [2026-06-17 10:58:17.979] [DEBUG] QUERY OK db=32.0ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "WIFI", "network_type", 39275, ~N[2026-06-17 10:58:17], ~N[2026-06-17 10:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:17.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306440, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:17], updated_at: ~N[2026-06-17 10:58:17]}} [2026-06-17 10:58:17.979] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:27Z", "value" => "true"} [2026-06-17 10:58:18.003] [DEBUG] QUERY OK db=23.3ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "true", "kiosk_active", 39275, ~N[2026-06-17 10:58:17], ~N[2026-06-17 10:58:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306441, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:17], updated_at: ~N[2026-06-17 10:58:17]}} [2026-06-17 10:58:18.003] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:27Z", "value" => ""} [2026-06-17 10:58:18.028] [DEBUG] QUERY OK db=23.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:27Z", "sim_operator", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306442, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.028] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"} [2026-06-17 10:58:18.047] [DEBUG] QUERY OK db=18.7ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "UNKNOWN", "sim_number", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306443, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.047] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"} [2026-06-17 10:58:18.076] [DEBUG] QUERY OK db=27.9ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "UNKNOWN", "sim_iccid", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306444, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.076] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"} [2026-06-17 10:58:18.112] [DEBUG] QUERY OK db=35.5ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "UNKNOWN", "sim_imsi", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306445, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.112] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"} [2026-06-17 10:58:18.134] [DEBUG] QUERY OK db=21.0ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "UNKNOWN", "sim_iccid2", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306446, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.134] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:27Z", "value" => "UNKNOWN"} [2026-06-17 10:58:18.196] [DEBUG] QUERY OK db=60.8ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "UNKNOWN", "sim_imsi2", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306447, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.196] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:27Z", "value" => "6"} [2026-06-17 10:58:18.222] [DEBUG] QUERY OK db=26.0ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "6", "data_usage_mb", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306448, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.223] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:27Z", "value" => "0"} [2026-06-17 10:58:18.246] [DEBUG] QUERY OK db=22.4ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "0", "mobile_data_mb", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306449, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.247] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:18.287] [DEBUG] QUERY OK db=39.5ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39275, ~N[2026-06-17 10:58:18], ~N[2026-06-17 10:58:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:18.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306450, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:27Z", message: nil, status_log_id: 39275, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:18], updated_at: ~N[2026-06-17 10:58:18]}} [2026-06-17 10:58:18.290] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=43.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:18.290] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:17]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:24.135] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:24.135] [INFO ] Incoming JSON payload: {"oid":"4c849789-2019-40ac-b89c-e7cd62333d89","sn":"98251226730002","uploadTime":"2026-06-17T10:57:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"ram_free_mb","value":"755","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:57:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:33Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:58:24.136] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4c849789-2019-40ac-b89c-e7cd62333d89", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:33Z", "value" => "755"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:33Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:33Z", "vendor" => "morefun"} [2026-06-17 10:58:24.136] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:24.136] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:24.136] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:24.138] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1393.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:58:24.143] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=3.3ms idle=392.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-06-17 10:58:24.143] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:24.146] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:24.146] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:24.173] [DEBUG] QUERY OK source="tms_terminals" db=26.8ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:24], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:24.173] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:24.174] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:24.196] [DEBUG] QUERY OK source="tms_terminals" db=21.0ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:24], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:24.231] [DEBUG] QUERY OK db=35.3ms idle=21.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4c849789-2019-40ac-b89c-e7cd62333d89", "2026-06-17T10:57:33Z", ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:24.231] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39276, oid: "4c849789-2019-40ac-b89c-e7cd62333d89", upload_time: "2026-06-17T10:57:33Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]} [2026-06-17 10:58:24.232] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:33Z", "value" => "morefun"} [2026-06-17 10:58:24.256] [DEBUG] QUERY OK db=24.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "morefun", "vendor", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306451, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.257] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:33Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:24.273] [DEBUG] QUERY OK db=16.3ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "kiosk_launcher", "model", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306452, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.274] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:33Z", "value" => "1.0"} [2026-06-17 10:58:24.299] [DEBUG] QUERY OK db=24.1ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "1.0", "app_version", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306453, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.299] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:33Z", "value" => "13"} [2026-06-17 10:58:24.337] [DEBUG] QUERY OK db=36.8ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "13", "android_version", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306454, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.337] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:33Z", "value" => "755"} [2026-06-17 10:58:24.358] [DEBUG] QUERY OK db=20.2ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "755", "ram_free_mb", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306455, itemkey: "ram_free_mb", value: "755", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.358] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:33Z", "value" => "WIFI"} [2026-06-17 10:58:24.378] [DEBUG] QUERY OK db=17.8ms queue=1.3ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "WIFI", "network_type", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306456, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.379] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:33Z", "value" => "true"} [2026-06-17 10:58:24.408] [DEBUG] QUERY OK db=28.0ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "true", "kiosk_active", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306457, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.408] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:33Z", "value" => ""} [2026-06-17 10:58:24.432] [DEBUG] QUERY OK db=23.4ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:33Z", "sim_operator", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306458, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.432] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"} [2026-06-17 10:58:24.458] [DEBUG] QUERY OK db=24.8ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "UNKNOWN", "sim_number", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306459, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.458] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"} [2026-06-17 10:58:24.475] [DEBUG] QUERY OK db=15.6ms queue=0.3ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "UNKNOWN", "sim_iccid", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306460, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.475] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"} [2026-06-17 10:58:24.488] [DEBUG] QUERY OK db=11.8ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "UNKNOWN", "sim_imsi", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306461, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.488] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"} [2026-06-17 10:58:24.527] [DEBUG] QUERY OK db=35.7ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "UNKNOWN", "sim_iccid2", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306462, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.527] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:33Z", "value" => "UNKNOWN"} [2026-06-17 10:58:24.551] [DEBUG] QUERY OK db=23.6ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "UNKNOWN", "sim_imsi2", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306463, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.552] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:33Z", "value" => "6"} [2026-06-17 10:58:24.575] [DEBUG] QUERY OK db=21.8ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "6", "data_usage_mb", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306464, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.575] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:33Z", "value" => "0"} [2026-06-17 10:58:24.594] [DEBUG] QUERY OK db=15.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "0", "mobile_data_mb", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306465, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.594] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:24.627] [DEBUG] QUERY OK db=31.6ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39276, ~N[2026-06-17 10:58:24], ~N[2026-06-17 10:58:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:24.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306466, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:33Z", message: nil, status_log_id: 39276, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:24], updated_at: ~N[2026-06-17 10:58:24]}} [2026-06-17 10:58:24.635] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=39.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:24.635] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:24]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:30.219] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:30.219] [INFO ] Incoming JSON payload: {"oid":"a88de6f1-d7dc-45b5-9cf2-c652fae7a064","sn":"98251226730002","uploadTime":"2026-06-17T10:57:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"ram_free_mb","value":"843","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T10:57:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:40Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:58:30.221] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a88de6f1-d7dc-45b5-9cf2-c652fae7a064", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:40Z", "value" => "843"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:40Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:40Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:40Z", "vendor" => "morefun"} [2026-06-17 10:58:30.221] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:30.221] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:30.221] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:30.222] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1455.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-06-17 10:58:30.223] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=452.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-06-17 10:58:30.223] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:30.226] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:30.226] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:30.249] [DEBUG] QUERY OK source="tms_terminals" db=21.9ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:30.249] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:30.251] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:30.280] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:30.314] [DEBUG] QUERY OK db=33.4ms queue=0.1ms idle=29.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a88de6f1-d7dc-45b5-9cf2-c652fae7a064", "2026-06-17T10:57:40Z", ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:30.314] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39277, oid: "a88de6f1-d7dc-45b5-9cf2-c652fae7a064", upload_time: "2026-06-17T10:57:40Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]} [2026-06-17 10:58:30.314] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:40Z", "value" => "morefun"} [2026-06-17 10:58:30.327] [DEBUG] QUERY OK db=13.0ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "morefun", "vendor", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306467, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.328] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:40Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:30.343] [DEBUG] QUERY OK db=15.0ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "kiosk_launcher", "model", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306468, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.344] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:40Z", "value" => "1.0"} [2026-06-17 10:58:30.375] [DEBUG] QUERY OK db=24.0ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "1.0", "app_version", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306469, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.379] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:40Z", "value" => "13"} [2026-06-17 10:58:30.410] [DEBUG] QUERY OK db=23.6ms queue=0.1ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "13", "android_version", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306470, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.411] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:40Z", "value" => "843"} [2026-06-17 10:58:30.432] [DEBUG] QUERY OK db=20.7ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "843", "ram_free_mb", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306471, itemkey: "ram_free_mb", value: "843", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.432] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:40Z", "value" => "WIFI"} [2026-06-17 10:58:30.447] [DEBUG] QUERY OK db=14.6ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "WIFI", "network_type", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306472, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.449] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:40Z", "value" => "true"} [2026-06-17 10:58:30.477] [DEBUG] QUERY OK db=27.8ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "true", "kiosk_active", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306473, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.479] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:40Z", "value" => ""} [2026-06-17 10:58:30.517] [DEBUG] QUERY OK db=37.7ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:40Z", "sim_operator", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306474, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.518] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"} [2026-06-17 10:58:30.545] [DEBUG] QUERY OK db=26.8ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "UNKNOWN", "sim_number", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306475, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.551] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"} [2026-06-17 10:58:30.564] [DEBUG] QUERY OK db=11.8ms queue=0.1ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "UNKNOWN", "sim_iccid", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306476, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.566] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"} [2026-06-17 10:58:30.599] [DEBUG] QUERY OK db=31.8ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "UNKNOWN", "sim_imsi", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306477, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.603] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"} [2026-06-17 10:58:30.628] [DEBUG] QUERY OK db=23.9ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "UNKNOWN", "sim_iccid2", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306478, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.633] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:40Z", "value" => "UNKNOWN"} [2026-06-17 10:58:30.659] [DEBUG] QUERY OK db=22.8ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "UNKNOWN", "sim_imsi2", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306479, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.659] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:40Z", "value" => "6"} [2026-06-17 10:58:30.675] [DEBUG] QUERY OK db=14.0ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "6", "data_usage_mb", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306480, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.679] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:40Z", "value" => "0"} [2026-06-17 10:58:30.707] [DEBUG] QUERY OK db=23.9ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "0", "mobile_data_mb", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306481, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.711] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:40Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:30.744] [DEBUG] QUERY OK db=31.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:40Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39277, ~N[2026-06-17 10:58:30], ~N[2026-06-17 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:30.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306482, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:40Z", message: nil, status_log_id: 39277, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:30], updated_at: ~N[2026-06-17 10:58:30]}} [2026-06-17 10:58:30.746] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=38.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:30.747] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:30]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:36.305] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:36.305] [INFO ] Incoming JSON payload: {"oid":"0cdca4de-630d-4d39-924f-3946b4a6fb72","sn":"98251226730002","uploadTime":"2026-06-17T10:57:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"ram_free_mb","value":"843","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:57:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:46Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:58:36.307] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0cdca4de-630d-4d39-924f-3946b4a6fb72", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:46Z", "value" => "843"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:46Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:46Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:46Z", "vendor" => "morefun"} [2026-06-17 10:58:36.307] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:36.307] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:36.308] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:36.309] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1036.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:58:36.310] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=517.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.`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-06-17 10:58:36.310] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:36.311] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:36.312] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:36.348] [DEBUG] QUERY OK source="tms_terminals" db=36.2ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:36.348] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:36.349] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=37.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:36.382] [DEBUG] QUERY OK source="tms_terminals" db=32.3ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:36.406] [DEBUG] QUERY OK db=23.2ms queue=0.1ms idle=33.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0cdca4de-630d-4d39-924f-3946b4a6fb72", "2026-06-17T10:57:46Z", ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:36.406] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39278, oid: "0cdca4de-630d-4d39-924f-3946b4a6fb72", upload_time: "2026-06-17T10:57:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]} [2026-06-17 10:58:36.406] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:46Z", "value" => "morefun"} [2026-06-17 10:58:36.440] [DEBUG] QUERY OK db=32.7ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "morefun", "vendor", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306483, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.440] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:46Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:36.457] [DEBUG] QUERY OK db=17.0ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "kiosk_launcher", "model", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306484, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.458] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:46Z", "value" => "1.0"} [2026-06-17 10:58:36.481] [DEBUG] QUERY OK db=23.5ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "1.0", "app_version", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306485, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.482] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:46Z", "value" => "13"} [2026-06-17 10:58:36.517] [DEBUG] QUERY OK db=34.3ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "13", "android_version", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306486, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.518] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:46Z", "value" => "843"} [2026-06-17 10:58:36.549] [DEBUG] QUERY OK db=31.2ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "843", "ram_free_mb", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306487, itemkey: "ram_free_mb", value: "843", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.549] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:46Z", "value" => "WIFI"} [2026-06-17 10:58:36.572] [DEBUG] QUERY OK db=22.2ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "WIFI", "network_type", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306488, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.573] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:46Z", "value" => "true"} [2026-06-17 10:58:36.591] [DEBUG] QUERY OK db=17.7ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "true", "kiosk_active", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306489, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.591] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:46Z", "value" => ""} [2026-06-17 10:58:36.618] [DEBUG] QUERY OK db=25.9ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:46Z", "sim_operator", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306490, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.619] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"} [2026-06-17 10:58:36.652] [DEBUG] QUERY OK db=33.3ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "UNKNOWN", "sim_number", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306491, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.653] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"} [2026-06-17 10:58:36.676] [DEBUG] QUERY OK db=23.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "UNKNOWN", "sim_iccid", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306492, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.677] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"} [2026-06-17 10:58:36.703] [DEBUG] QUERY OK db=26.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "UNKNOWN", "sim_imsi", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306493, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.704] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"} [2026-06-17 10:58:36.726] [DEBUG] QUERY OK db=22.0ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "UNKNOWN", "sim_iccid2", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306494, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.726] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:46Z", "value" => "UNKNOWN"} [2026-06-17 10:58:36.767] [DEBUG] QUERY OK db=40.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "UNKNOWN", "sim_imsi2", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306495, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.770] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:46Z", "value" => "7"} [2026-06-17 10:58:36.794] [DEBUG] QUERY OK db=24.1ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "7", "data_usage_mb", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306496, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.801] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:46Z", "value" => "0"} [2026-06-17 10:58:36.829] [DEBUG] QUERY OK db=27.2ms queue=0.1ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "0", "mobile_data_mb", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306497, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.835] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:46Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:36.865] [DEBUG] QUERY OK db=28.4ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:46Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39278, ~N[2026-06-17 10:58:36], ~N[2026-06-17 10:58:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:36.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306498, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:46Z", message: nil, status_log_id: 39278, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:36], updated_at: ~N[2026-06-17 10:58:36]}} [2026-06-17 10:58:36.867] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=37.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:36.868] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:36]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:42.801] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:42.801] [INFO ] Incoming JSON payload: {"oid":"a404ddfc-7b01-4b8e-ba33-6e855953b20d","sn":"98251226730002","uploadTime":"2026-06-17T10:57:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"ram_free_mb","value":"842","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:57:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:52Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:58:42.804] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a404ddfc-7b01-4b8e-ba33-6e855953b20d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:52Z", "value" => "842"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:52Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:52Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:52Z", "vendor" => "morefun"} [2026-06-17 10:58:42.804] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:42.804] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:42.804] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:42.805] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=974.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-06-17 10:58:42.806] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.5ms idle=533.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-06-17 10:58:42.806] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:42.808] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:42.808] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:42.833] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:42.834] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:42.835] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.6ms idle=0.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:42.865] [DEBUG] QUERY OK source="tms_terminals" db=29.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:42.888] [DEBUG] QUERY OK db=23.1ms idle=29.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a404ddfc-7b01-4b8e-ba33-6e855953b20d", "2026-06-17T10:57:52Z", ~N[2026-06-17 10:58:42], ~N[2026-06-17 10:58:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:42.889] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39279, oid: "a404ddfc-7b01-4b8e-ba33-6e855953b20d", upload_time: "2026-06-17T10:57:52Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:42], updated_at: ~N[2026-06-17 10:58:42]} [2026-06-17 10:58:42.889] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:52Z", "value" => "morefun"} [2026-06-17 10:58:42.913] [DEBUG] QUERY OK db=23.9ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "morefun", "vendor", 39279, ~N[2026-06-17 10:58:42], ~N[2026-06-17 10:58:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:42.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306499, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:42], updated_at: ~N[2026-06-17 10:58:42]}} [2026-06-17 10:58:42.914] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:52Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:42.952] [DEBUG] QUERY OK db=37.7ms queue=0.5ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "kiosk_launcher", "model", 39279, ~N[2026-06-17 10:58:42], ~N[2026-06-17 10:58:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:42.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306500, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:42], updated_at: ~N[2026-06-17 10:58:42]}} [2026-06-17 10:58:42.953] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:52Z", "value" => "1.0"} [2026-06-17 10:58:42.977] [DEBUG] QUERY OK db=24.2ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "1.0", "app_version", 39279, ~N[2026-06-17 10:58:42], ~N[2026-06-17 10:58:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:42.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306501, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:42], updated_at: ~N[2026-06-17 10:58:42]}} [2026-06-17 10:58:42.978] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:52Z", "value" => "13"} [2026-06-17 10:58:42.999] [DEBUG] QUERY OK db=21.4ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "13", "android_version", 39279, ~N[2026-06-17 10:58:42], ~N[2026-06-17 10:58:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306502, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:42], updated_at: ~N[2026-06-17 10:58:42]}} [2026-06-17 10:58:43.000] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:52Z", "value" => "842"} [2026-06-17 10:58:43.023] [DEBUG] QUERY OK db=23.0ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "842", "ram_free_mb", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306503, itemkey: "ram_free_mb", value: "842", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.024] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:52Z", "value" => "WIFI"} [2026-06-17 10:58:43.048] [DEBUG] QUERY OK db=23.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "WIFI", "network_type", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306504, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.048] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:52Z", "value" => "true"} [2026-06-17 10:58:43.087] [DEBUG] QUERY OK db=38.1ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "true", "kiosk_active", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306505, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.089] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:52Z", "value" => ""} [2026-06-17 10:58:43.117] [DEBUG] QUERY OK db=27.5ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:52Z", "sim_operator", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306506, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.118] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"} [2026-06-17 10:58:43.151] [DEBUG] QUERY OK db=32.3ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "UNKNOWN", "sim_number", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306507, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.151] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"} [2026-06-17 10:58:43.200] [DEBUG] QUERY OK db=48.6ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "UNKNOWN", "sim_iccid", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306508, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.201] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"} [2026-06-17 10:58:43.240] [DEBUG] QUERY OK db=38.5ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "UNKNOWN", "sim_imsi", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306509, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.240] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"} [2026-06-17 10:58:43.284] [DEBUG] QUERY OK db=43.3ms queue=0.5ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "UNKNOWN", "sim_iccid2", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306510, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.285] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:52Z", "value" => "UNKNOWN"} [2026-06-17 10:58:43.311] [DEBUG] QUERY OK db=26.3ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "UNKNOWN", "sim_imsi2", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306511, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.312] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:52Z", "value" => "7"} [2026-06-17 10:58:43.374] [DEBUG] QUERY OK db=61.3ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "7", "data_usage_mb", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306512, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.374] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:52Z", "value" => "0"} [2026-06-17 10:58:43.416] [DEBUG] QUERY OK db=41.4ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "0", "mobile_data_mb", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306513, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.417] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:52Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:43.467] [DEBUG] QUERY OK db=45.7ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:52Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39279, ~N[2026-06-17 10:58:43], ~N[2026-06-17 10:58:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:43.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306514, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:52Z", message: nil, status_log_id: 39279, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:43], updated_at: ~N[2026-06-17 10:58:43]}} [2026-06-17 10:58:43.477] [DEBUG] QUERY OK source="tms_terminals" db=8.7ms idle=52.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:43.477] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:53:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:45.431] [INFO ] Received status update for terminal 61250424798001 [2026-06-17 10:58:45.431] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-06-17T14:58:44Z","org.device":[{"itemkey":"battery","value":24,"timestamp":"2026-06-17T14:58:44Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-06-17T14:58:44Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-06-17T14:58:44Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-06-17T14:58:44Z","message":""}]} [2026-06-17 10:58:45.432] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-06-17T14:58:44Z", "value" => 24}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-06-17T14:58:44Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-06-17T14:58:44Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-06-17T14:58:44Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-06-17T14:58:44Z"} [2026-06-17 10:58:45.432] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:45.433] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=594.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` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:45.433] [INFO ] Terminal updated: 61250424798001 [2026-06-17 10:58:45.457] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms idle=162.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:45], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:45.459] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=24.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` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:45.493] [DEBUG] QUERY OK source="tms_terminals" db=31.7ms queue=1.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:45], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:45.515] [DEBUG] QUERY OK db=21.0ms idle=34.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-06-17T14:58:44Z", ~N[2026-06-17 10:58:45], ~N[2026-06-17 10:58:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:45.515] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39280, oid: "org-id-placeholder", upload_time: "2026-06-17T14:58:44Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:45], updated_at: ~N[2026-06-17 10:58:45]} [2026-06-17 10:58:45.515] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-06-17T14:58:44Z", "value" => 24} [2026-06-17 10:58:45.532] [DEBUG] QUERY OK db=16.2ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:58:44Z", "24", "battery", 39280, ~N[2026-06-17 10:58:45], ~N[2026-06-17 10:58:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:45.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306515, itemkey: "battery", value: "24", timestamp: "2026-06-17T14:58:44Z", message: nil, status_log_id: 39280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:45], updated_at: ~N[2026-06-17 10:58:45]}} [2026-06-17 10:58:45.533] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-06-17T14:58:44Z", "value" => 50} [2026-06-17 10:58:45.563] [DEBUG] QUERY OK db=29.6ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-06-17T14:58:44Z", "50", "memory", 39280, ~N[2026-06-17 10:58:45], ~N[2026-06-17 10:58:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:45.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306516, itemkey: "memory", value: "50", timestamp: "2026-06-17T14:58:44Z", message: "Normal", status_log_id: 39280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:45], updated_at: ~N[2026-06-17 10:58:45]}} [2026-06-17 10:58:45.564] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-06-17T14:58:44Z", "value" => 50} [2026-06-17 10:58:45.594] [DEBUG] QUERY OK db=23.6ms queue=3.1ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:58:44Z", "50", "cpu", 39280, ~N[2026-06-17 10:58:45], ~N[2026-06-17 10:58:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:45.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306517, itemkey: "cpu", value: "50", timestamp: "2026-06-17T14:58:44Z", message: nil, status_log_id: 39280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:45], updated_at: ~N[2026-06-17 10:58:45]}} [2026-06-17 10:58:45.595] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-06-17T14:58:44Z", "value" => "online"} [2026-06-17 10:58:45.627] [DEBUG] QUERY OK db=30.6ms queue=1.7ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:58:44Z", "online", "network", 39280, ~N[2026-06-17 10:58:45], ~N[2026-06-17 10:58:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:45.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306518, itemkey: "network", value: "online", timestamp: "2026-06-17T14:58:44Z", message: nil, status_log_id: 39280, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:45], updated_at: ~N[2026-06-17 10:58:45]}} [2026-06-17 10:58:45.628] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-06-17 10:58:45.628] [INFO ] Terminal 61250424798001 status changed to: online. Updated grid with 4 terminals [2026-06-17 10:58:45.632] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=37.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:45.632] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:58:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:42]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:48.717] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:48.717] [INFO ] Incoming JSON payload: {"oid":"01efb1b7-b99e-437c-9862-a8f49a7efd21","sn":"98251226730002","uploadTime":"2026-06-17T10:57:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"ram_free_mb","value":"843","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:57:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:57:58Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 10:58:48.719] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "01efb1b7-b99e-437c-9862-a8f49a7efd21", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:58Z", "value" => "843"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:58Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:57:58Z", "vendor" => "morefun"} [2026-06-17 10:58:48.719] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:48.719] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:48.719] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:48.721] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=873.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-06-17 10:58:48.722] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=502.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-06-17 10:58:48.723] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:48.724] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:48.726] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:48.753] [DEBUG] QUERY OK source="tms_terminals" db=26.5ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:48.754] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:48.754] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:48.787] [DEBUG] QUERY OK source="tms_terminals" db=32.2ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:48.812] [DEBUG] QUERY OK db=24.7ms idle=32.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "01efb1b7-b99e-437c-9862-a8f49a7efd21", "2026-06-17T10:57:58Z", ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:48.812] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39281, oid: "01efb1b7-b99e-437c-9862-a8f49a7efd21", upload_time: "2026-06-17T10:57:58Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]} [2026-06-17 10:58:48.813] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:57:58Z", "value" => "morefun"} [2026-06-17 10:58:48.839] [DEBUG] QUERY OK db=25.9ms queue=0.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "morefun", "vendor", 39281, ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:48.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306519, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]}} [2026-06-17 10:58:48.839] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:57:58Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:48.857] [DEBUG] QUERY OK db=17.2ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "kiosk_launcher", "model", 39281, ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:48.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306520, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]}} [2026-06-17 10:58:48.857] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:57:58Z", "value" => "1.0"} [2026-06-17 10:58:48.892] [DEBUG] QUERY OK db=34.2ms idle=8.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "1.0", "app_version", 39281, ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:48.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306521, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]}} [2026-06-17 10:58:48.892] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:57:58Z", "value" => "13"} [2026-06-17 10:58:48.916] [DEBUG] QUERY OK db=23.0ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "13", "android_version", 39281, ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:48.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306522, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]}} [2026-06-17 10:58:48.916] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:57:58Z", "value" => "843"} [2026-06-17 10:58:48.940] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "843", "ram_free_mb", 39281, ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:48.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306523, itemkey: "ram_free_mb", value: "843", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]}} [2026-06-17 10:58:48.941] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:57:58Z", "value" => "WIFI"} [2026-06-17 10:58:48.970] [DEBUG] QUERY OK db=28.9ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "WIFI", "network_type", 39281, ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:48.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306524, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]}} [2026-06-17 10:58:48.970] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:57:58Z", "value" => "true"} [2026-06-17 10:58:48.993] [DEBUG] QUERY OK db=22.4ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "true", "kiosk_active", 39281, ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:48.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306525, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]}} [2026-06-17 10:58:48.994] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:57:58Z", "value" => ""} [2026-06-17 10:58:49.017] [DEBUG] QUERY OK db=23.3ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:57:58Z", "sim_operator", 39281, ~N[2026-06-17 10:58:48], ~N[2026-06-17 10:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306526, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:48], updated_at: ~N[2026-06-17 10:58:48]}} [2026-06-17 10:58:49.017] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"} [2026-06-17 10:58:49.053] [DEBUG] QUERY OK db=34.5ms queue=0.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "UNKNOWN", "sim_number", 39281, ~N[2026-06-17 10:58:49], ~N[2026-06-17 10:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306527, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:49], updated_at: ~N[2026-06-17 10:58:49]}} [2026-06-17 10:58:49.053] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"} [2026-06-17 10:58:49.077] [DEBUG] QUERY OK db=23.7ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "UNKNOWN", "sim_iccid", 39281, ~N[2026-06-17 10:58:49], ~N[2026-06-17 10:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306528, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:49], updated_at: ~N[2026-06-17 10:58:49]}} [2026-06-17 10:58:49.078] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"} [2026-06-17 10:58:49.094] [DEBUG] QUERY OK db=15.3ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "UNKNOWN", "sim_imsi", 39281, ~N[2026-06-17 10:58:49], ~N[2026-06-17 10:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306529, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:49], updated_at: ~N[2026-06-17 10:58:49]}} [2026-06-17 10:58:49.094] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"} [2026-06-17 10:58:49.118] [DEBUG] QUERY OK db=23.6ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "UNKNOWN", "sim_iccid2", 39281, ~N[2026-06-17 10:58:49], ~N[2026-06-17 10:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306530, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:49], updated_at: ~N[2026-06-17 10:58:49]}} [2026-06-17 10:58:49.119] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:57:58Z", "value" => "UNKNOWN"} [2026-06-17 10:58:49.174] [DEBUG] QUERY OK db=54.6ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "UNKNOWN", "sim_imsi2", 39281, ~N[2026-06-17 10:58:49], ~N[2026-06-17 10:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.174] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306531, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:49], updated_at: ~N[2026-06-17 10:58:49]}} [2026-06-17 10:58:49.175] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:57:58Z", "value" => "7"} [2026-06-17 10:58:49.206] [DEBUG] QUERY OK db=28.3ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "7", "data_usage_mb", 39281, ~N[2026-06-17 10:58:49], ~N[2026-06-17 10:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306532, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:49], updated_at: ~N[2026-06-17 10:58:49]}} [2026-06-17 10:58:49.206] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:57:58Z", "value" => "0"} [2026-06-17 10:58:49.240] [DEBUG] QUERY OK db=31.0ms queue=2.8ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "0", "mobile_data_mb", 39281, ~N[2026-06-17 10:58:49], ~N[2026-06-17 10:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306533, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:49], updated_at: ~N[2026-06-17 10:58:49]}} [2026-06-17 10:58:49.241] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:57:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:49.282] [DEBUG] QUERY OK db=36.6ms queue=3.3ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:57:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39281, ~N[2026-06-17 10:58:49], ~N[2026-06-17 10:58:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:49.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306534, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:57:58Z", message: nil, status_log_id: 39281, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:49], updated_at: ~N[2026-06-17 10:58:49]}} [2026-06-17 10:58:49.285] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=42.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:49.291] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:58:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:48]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:58:55.010] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:58:55.010] [INFO ] Incoming JSON payload: {"oid":"ae6c32f8-bc06-4af0-890e-9640339ccb0a","sn":"98251226730002","uploadTime":"2026-06-17T10:58:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"ram_free_mb","value":"858","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:58:55.011] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ae6c32f8-bc06-4af0-890e-9640339ccb0a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:04Z", "value" => "858"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:04Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:04Z", "vendor" => "morefun"} [2026-06-17 10:58:55.011] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:58:55.012] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:58:55.012] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:58:55.013] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1142.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:58:55.013] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=141.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-06-17 10:58:55.014] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:58:55.015] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:58:55.015] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:58:55.051] [DEBUG] QUERY OK source="tms_terminals" db=36.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:58:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:58:55.052] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:58:55.054] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:58:55.075] [DEBUG] QUERY OK source="tms_terminals" db=20.3ms queue=0.2ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:58:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:58:55.110] [DEBUG] QUERY OK db=33.6ms idle=22.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ae6c32f8-bc06-4af0-890e-9640339ccb0a", "2026-06-17T10:58:04Z", ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:58:55.110] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39282, oid: "ae6c32f8-bc06-4af0-890e-9640339ccb0a", upload_time: "2026-06-17T10:58:04Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]} [2026-06-17 10:58:55.110] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:04Z", "value" => "morefun"} [2026-06-17 10:58:55.155] [DEBUG] QUERY OK db=45.0ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "morefun", "vendor", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306535, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.156] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:04Z", "value" => "kiosk_launcher"} [2026-06-17 10:58:55.180] [DEBUG] QUERY OK db=24.2ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "kiosk_launcher", "model", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306536, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.186] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:04Z", "value" => "1.0"} [2026-06-17 10:58:55.221] [DEBUG] QUERY OK db=34.2ms queue=0.1ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "1.0", "app_version", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306537, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.221] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:04Z", "value" => "13"} [2026-06-17 10:58:55.257] [DEBUG] QUERY OK db=30.7ms queue=1.9ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "13", "android_version", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306538, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.257] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:04Z", "value" => "858"} [2026-06-17 10:58:55.276] [DEBUG] QUERY OK db=13.4ms queue=0.9ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "858", "ram_free_mb", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306539, itemkey: "ram_free_mb", value: "858", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.277] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:04Z", "value" => "WIFI"} [2026-06-17 10:58:55.310] [DEBUG] QUERY OK db=31.7ms queue=0.4ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "WIFI", "network_type", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306540, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.311] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:04Z", "value" => "true"} [2026-06-17 10:58:55.336] [DEBUG] QUERY OK db=24.8ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "true", "kiosk_active", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306541, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.339] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:04Z", "value" => ""} [2026-06-17 10:58:55.371] [DEBUG] QUERY OK db=30.8ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:04Z", "sim_operator", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306542, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.376] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"} [2026-06-17 10:58:55.394] [DEBUG] QUERY OK db=17.7ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "UNKNOWN", "sim_number", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306543, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.397] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"} [2026-06-17 10:58:55.427] [DEBUG] QUERY OK db=30.2ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "UNKNOWN", "sim_iccid", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306544, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.427] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"} [2026-06-17 10:58:55.462] [DEBUG] QUERY OK db=34.3ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "UNKNOWN", "sim_imsi", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306545, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.463] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"} [2026-06-17 10:58:55.481] [DEBUG] QUERY OK db=18.3ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "UNKNOWN", "sim_iccid2", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306546, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.482] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:04Z", "value" => "UNKNOWN"} [2026-06-17 10:58:55.497] [DEBUG] QUERY OK db=15.5ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "UNKNOWN", "sim_imsi2", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306547, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.498] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:04Z", "value" => "7"} [2026-06-17 10:58:55.512] [DEBUG] QUERY OK db=13.5ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "7", "data_usage_mb", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306548, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.512] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:04Z", "value" => "0"} [2026-06-17 10:58:55.539] [DEBUG] QUERY OK db=26.4ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:04Z", "0", "mobile_data_mb", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306549, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.546] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:58:55.572] [DEBUG] QUERY OK db=24.4ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39282, ~N[2026-06-17 10:58:55], ~N[2026-06-17 10:58:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:58:55.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306550, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:04Z", message: nil, status_log_id: 39282, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:58:55], updated_at: ~N[2026-06-17 10:58:55]}} [2026-06-17 10:58:55.577] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=37.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:58:55.577] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:58:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:58:55]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:59:01.090] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:01.091] [INFO ] Incoming JSON payload: {"oid":"7b3f36e7-d375-491c-9d2b-a9afa59ef100","sn":"98251226730002","uploadTime":"2026-06-17T10:58:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"ram_free_mb","value":"854","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:10Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:01.094] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7b3f36e7-d375-491c-9d2b-a9afa59ef100", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:10Z", "value" => "854"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:10Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:10Z", "vendor" => "morefun"} [2026-06-17 10:59:01.095] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:01.095] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:01.096] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:01.098] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=685.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:59:01.100] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=211.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-06-17 10:59:01.102] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:01.109] [DEBUG] QUERY OK source="tms_terminals" db=6.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:01.109] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:01.133] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms idle=9.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:01.133] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:01.137] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:01.188] [DEBUG] QUERY OK source="tms_terminals" db=50.4ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:01.227] [DEBUG] QUERY OK db=38.7ms idle=51.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "7b3f36e7-d375-491c-9d2b-a9afa59ef100", "2026-06-17T10:58:10Z", ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:01.229] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39283, oid: "7b3f36e7-d375-491c-9d2b-a9afa59ef100", upload_time: "2026-06-17T10:58:10Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]} [2026-06-17 10:59:01.229] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:10Z", "value" => "morefun"} [2026-06-17 10:59:01.275] [DEBUG] QUERY OK db=45.3ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "morefun", "vendor", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306551, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.275] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:10Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:01.312] [DEBUG] QUERY OK db=36.4ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "kiosk_launcher", "model", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306552, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.312] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:10Z", "value" => "1.0"} [2026-06-17 10:59:01.334] [DEBUG] QUERY OK db=21.4ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "1.0", "app_version", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306553, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.335] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:10Z", "value" => "13"} [2026-06-17 10:59:01.359] [DEBUG] QUERY OK db=23.7ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "13", "android_version", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306554, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.360] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:10Z", "value" => "854"} [2026-06-17 10:59:01.387] [DEBUG] QUERY OK db=26.5ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "854", "ram_free_mb", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306555, itemkey: "ram_free_mb", value: "854", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.388] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:10Z", "value" => "WIFI"} [2026-06-17 10:59:01.414] [DEBUG] QUERY OK db=25.3ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "WIFI", "network_type", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306556, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.414] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:10Z", "value" => "true"} [2026-06-17 10:59:01.429] [DEBUG] QUERY OK db=12.2ms queue=1.6ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "true", "kiosk_active", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306557, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.429] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:10Z", "value" => ""} [2026-06-17 10:59:01.447] [DEBUG] QUERY OK db=17.4ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:10Z", "sim_operator", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306558, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.447] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"} [2026-06-17 10:59:01.473] [DEBUG] QUERY OK db=24.5ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "UNKNOWN", "sim_number", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306559, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.473] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"} [2026-06-17 10:59:01.499] [DEBUG] QUERY OK db=25.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "UNKNOWN", "sim_iccid", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306560, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.499] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"} [2026-06-17 10:59:01.527] [DEBUG] QUERY OK db=24.9ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "UNKNOWN", "sim_imsi", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306561, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.528] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"} [2026-06-17 10:59:01.544] [DEBUG] QUERY OK db=15.0ms queue=0.1ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "UNKNOWN", "sim_iccid2", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306562, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.544] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:10Z", "value" => "UNKNOWN"} [2026-06-17 10:59:01.583] [DEBUG] QUERY OK db=35.5ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "UNKNOWN", "sim_imsi2", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306563, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.584] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:10Z", "value" => "7"} [2026-06-17 10:59:01.608] [DEBUG] QUERY OK db=23.9ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "7", "data_usage_mb", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306564, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.608] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:10Z", "value" => "0"} [2026-06-17 10:59:01.636] [DEBUG] QUERY OK db=27.5ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "0", "mobile_data_mb", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306565, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.640] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:01.655] [DEBUG] QUERY OK db=13.3ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39283, ~N[2026-06-17 10:59:01], ~N[2026-06-17 10:59:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:01.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306566, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:10Z", message: nil, status_log_id: 39283, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:01], updated_at: ~N[2026-06-17 10:59:01]}} [2026-06-17 10:59:01.659] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=22.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:59:01.661] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:58:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:59:01]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:59:07.000] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:07.000] [INFO ] Incoming JSON payload: {"oid":"ce51cb02-df81-4765-b29a-2b89fe968089","sn":"98251226730002","uploadTime":"2026-06-17T10:58:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"ram_free_mb","value":"853","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:16Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:07.004] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ce51cb02-df81-4765-b29a-2b89fe968089", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:16Z", "value" => "853"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:16Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:16Z", "vendor" => "morefun"} [2026-06-17 10:59:07.004] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:07.004] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:07.004] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:07.006] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=730.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-06-17 10:59:07.007] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=75.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-06-17 10:59:07.007] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:07.011] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms queue=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:07.012] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:07.037] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:07], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:07.037] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:07.040] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:07.060] [DEBUG] QUERY OK source="tms_terminals" db=17.6ms queue=0.6ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:07], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:07.078] [DEBUG] QUERY OK db=14.5ms queue=0.2ms idle=23.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ce51cb02-df81-4765-b29a-2b89fe968089", "2026-06-17T10:58:16Z", ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:07.078] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39284, oid: "ce51cb02-df81-4765-b29a-2b89fe968089", upload_time: "2026-06-17T10:58:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]} [2026-06-17 10:59:07.078] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:16Z", "value" => "morefun"} [2026-06-17 10:59:07.096] [DEBUG] QUERY OK db=17.8ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "morefun", "vendor", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306567, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.097] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:16Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:07.128] [DEBUG] QUERY OK db=30.5ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "kiosk_launcher", "model", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306568, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.129] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:16Z", "value" => "1.0"} [2026-06-17 10:59:07.154] [DEBUG] QUERY OK db=24.4ms queue=0.7ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "1.0", "app_version", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306569, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.155] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:16Z", "value" => "13"} [2026-06-17 10:59:07.169] [DEBUG] QUERY OK db=12.3ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "13", "android_version", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306570, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.170] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:16Z", "value" => "853"} [2026-06-17 10:59:07.200] [DEBUG] QUERY OK db=23.2ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "853", "ram_free_mb", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306571, itemkey: "ram_free_mb", value: "853", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.203] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:16Z", "value" => "WIFI"} [2026-06-17 10:59:07.236] [DEBUG] QUERY OK db=32.7ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "WIFI", "network_type", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306572, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.237] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:16Z", "value" => "true"} [2026-06-17 10:59:07.261] [DEBUG] QUERY OK db=24.2ms queue=0.1ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "true", "kiosk_active", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306573, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.262] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:16Z", "value" => ""} [2026-06-17 10:59:07.291] [DEBUG] QUERY OK db=29.0ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:16Z", "sim_operator", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306574, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.293] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"} [2026-06-17 10:59:07.327] [DEBUG] QUERY OK db=30.0ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "UNKNOWN", "sim_number", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306575, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.329] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"} [2026-06-17 10:59:07.364] [DEBUG] QUERY OK db=33.7ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "UNKNOWN", "sim_iccid", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306576, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.365] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"} [2026-06-17 10:59:07.379] [DEBUG] QUERY OK db=13.6ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "UNKNOWN", "sim_imsi", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306577, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.380] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"} [2026-06-17 10:59:07.394] [DEBUG] QUERY OK db=14.0ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "UNKNOWN", "sim_iccid2", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306578, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.394] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:16Z", "value" => "UNKNOWN"} [2026-06-17 10:59:07.411] [DEBUG] QUERY OK db=16.1ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "UNKNOWN", "sim_imsi2", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306579, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.412] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:16Z", "value" => "7"} [2026-06-17 10:59:07.445] [DEBUG] QUERY OK db=31.6ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "7", "data_usage_mb", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306580, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.446] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:16Z", "value" => "0"} [2026-06-17 10:59:07.473] [DEBUG] QUERY OK db=27.4ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "0", "mobile_data_mb", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306581, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.476] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:07.496] [DEBUG] QUERY OK db=18.4ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39284, ~N[2026-06-17 10:59:07], ~N[2026-06-17 10:59:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:07.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306582, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:16Z", message: nil, status_log_id: 39284, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:07], updated_at: ~N[2026-06-17 10:59:07]}} [2026-06-17 10:59:07.503] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=28.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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:59:07.505] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:58:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:59:07]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:59:13.341] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:13.341] [INFO ] Incoming JSON payload: {"oid":"c96603cd-1603-4fae-9d81-88de5a0ab97c","sn":"98251226730002","uploadTime":"2026-06-17T10:58:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"ram_free_mb","value":"852","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:23Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:13.342] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c96603cd-1603-4fae-9d81-88de5a0ab97c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:23Z", "value" => "852"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:23Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:23Z", "vendor" => "morefun"} [2026-06-17 10:59:13.342] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:13.342] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:13.343] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:13.343] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=388.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 10:59:13.344] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=69.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-06-17 10:59:13.344] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:13.346] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:13.346] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:13.371] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:13.371] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:13.372] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:13.398] [DEBUG] QUERY OK source="tms_terminals" db=25.7ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:13.409] [DEBUG] QUERY OK db=11.0ms idle=26.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c96603cd-1603-4fae-9d81-88de5a0ab97c", "2026-06-17T10:58:23Z", ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:13.409] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39285, oid: "c96603cd-1603-4fae-9d81-88de5a0ab97c", upload_time: "2026-06-17T10:58:23Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]} [2026-06-17 10:59:13.410] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:23Z", "value" => "morefun"} [2026-06-17 10:59:13.439] [DEBUG] QUERY OK db=28.6ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "morefun", "vendor", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306583, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.440] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:23Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:13.475] [DEBUG] QUERY OK db=34.1ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "kiosk_launcher", "model", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306584, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.475] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:23Z", "value" => "1.0"} [2026-06-17 10:59:13.498] [DEBUG] QUERY OK db=23.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "1.0", "app_version", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306585, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.500] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:23Z", "value" => "13"} [2026-06-17 10:59:13.522] [DEBUG] QUERY OK db=21.4ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "13", "android_version", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306586, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.522] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:23Z", "value" => "852"} [2026-06-17 10:59:13.556] [DEBUG] QUERY OK db=33.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "852", "ram_free_mb", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306587, itemkey: "ram_free_mb", value: "852", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.557] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:23Z", "value" => "WIFI"} [2026-06-17 10:59:13.583] [DEBUG] QUERY OK db=23.7ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "WIFI", "network_type", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306588, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.584] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:23Z", "value" => "true"} [2026-06-17 10:59:13.617] [DEBUG] QUERY OK db=32.1ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "true", "kiosk_active", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306589, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.619] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:23Z", "value" => ""} [2026-06-17 10:59:13.635] [DEBUG] QUERY OK db=15.8ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:23Z", "sim_operator", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306590, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.635] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"} [2026-06-17 10:59:13.667] [DEBUG] QUERY OK db=30.9ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "UNKNOWN", "sim_number", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306591, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.667] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"} [2026-06-17 10:59:13.693] [DEBUG] QUERY OK db=25.7ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "UNKNOWN", "sim_iccid", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306592, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.694] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"} [2026-06-17 10:59:13.718] [DEBUG] QUERY OK db=23.4ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "UNKNOWN", "sim_imsi", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306593, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.718] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"} [2026-06-17 10:59:13.750] [DEBUG] QUERY OK db=31.2ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "UNKNOWN", "sim_iccid2", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306594, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.750] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:23Z", "value" => "UNKNOWN"} [2026-06-17 10:59:13.772] [DEBUG] QUERY OK db=21.3ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "UNKNOWN", "sim_imsi2", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306595, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.772] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:23Z", "value" => "7"} [2026-06-17 10:59:13.798] [DEBUG] QUERY OK db=25.7ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "7", "data_usage_mb", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306596, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.799] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:23Z", "value" => "0"} [2026-06-17 10:59:13.830] [DEBUG] QUERY OK db=31.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "0", "mobile_data_mb", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306597, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.835] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:13.867] [DEBUG] QUERY OK db=30.7ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39285, ~N[2026-06-17 10:59:13], ~N[2026-06-17 10:59:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:13.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306598, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:23Z", message: nil, status_log_id: 39285, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:13], updated_at: ~N[2026-06-17 10:59:13]}} [2026-06-17 10:59:13.869] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:59:13.870] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:58:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:59:13]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:59:19.797] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:19.798] [INFO ] Incoming JSON payload: {"oid":"35101e0e-755c-4f92-9a5d-25a62a1e0dab","sn":"98251226730002","uploadTime":"2026-06-17T10:58:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"ram_free_mb","value":"852","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:29Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:19.799] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "35101e0e-755c-4f92-9a5d-25a62a1e0dab", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:29Z", "value" => "852"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:29Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:29Z", "vendor" => "morefun"} [2026-06-17 10:59:19.799] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:19.799] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:19.799] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:19.800] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=829.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-06-17 10:59:19.801] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=523.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-06-17 10:59:19.801] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:19.801] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:19.802] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:19.826] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:19.826] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:19.827] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:19.847] [DEBUG] QUERY OK source="tms_terminals" db=19.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:19.871] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=20.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "35101e0e-755c-4f92-9a5d-25a62a1e0dab", "2026-06-17T10:58:29Z", ~N[2026-06-17 10:59:19], ~N[2026-06-17 10:59:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:19.871] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39286, oid: "35101e0e-755c-4f92-9a5d-25a62a1e0dab", upload_time: "2026-06-17T10:58:29Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:19], updated_at: ~N[2026-06-17 10:59:19]} [2026-06-17 10:59:19.871] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:29Z", "value" => "morefun"} [2026-06-17 10:59:19.901] [DEBUG] QUERY OK db=29.4ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "morefun", "vendor", 39286, ~N[2026-06-17 10:59:19], ~N[2026-06-17 10:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:19.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306599, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:19], updated_at: ~N[2026-06-17 10:59:19]}} [2026-06-17 10:59:19.901] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:29Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:19.925] [DEBUG] QUERY OK db=23.4ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "kiosk_launcher", "model", 39286, ~N[2026-06-17 10:59:19], ~N[2026-06-17 10:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:19.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306600, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:19], updated_at: ~N[2026-06-17 10:59:19]}} [2026-06-17 10:59:19.925] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:29Z", "value" => "1.0"} [2026-06-17 10:59:19.949] [DEBUG] QUERY OK db=23.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "1.0", "app_version", 39286, ~N[2026-06-17 10:59:19], ~N[2026-06-17 10:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:19.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306601, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:19], updated_at: ~N[2026-06-17 10:59:19]}} [2026-06-17 10:59:19.949] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:29Z", "value" => "13"} [2026-06-17 10:59:19.965] [DEBUG] QUERY OK db=15.6ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "13", "android_version", 39286, ~N[2026-06-17 10:59:19], ~N[2026-06-17 10:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:19.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306602, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:19], updated_at: ~N[2026-06-17 10:59:19]}} [2026-06-17 10:59:19.966] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:29Z", "value" => "852"} [2026-06-17 10:59:19.999] [DEBUG] QUERY OK db=33.4ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "852", "ram_free_mb", 39286, ~N[2026-06-17 10:59:19], ~N[2026-06-17 10:59:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306603, itemkey: "ram_free_mb", value: "852", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:19], updated_at: ~N[2026-06-17 10:59:19]}} [2026-06-17 10:59:20.000] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:29Z", "value" => "WIFI"} [2026-06-17 10:59:20.027] [DEBUG] QUERY OK db=26.8ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "WIFI", "network_type", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306604, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.028] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:29Z", "value" => "true"} [2026-06-17 10:59:20.052] [DEBUG] QUERY OK db=23.8ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "true", "kiosk_active", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306605, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.056] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:29Z", "value" => ""} [2026-06-17 10:59:20.078] [DEBUG] QUERY OK db=17.6ms queue=3.7ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:29Z", "sim_operator", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306606, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.078] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"} [2026-06-17 10:59:20.112] [DEBUG] QUERY OK db=27.7ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "UNKNOWN", "sim_number", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306607, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.112] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"} [2026-06-17 10:59:20.138] [DEBUG] QUERY OK db=24.7ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "UNKNOWN", "sim_iccid", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306608, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.138] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"} [2026-06-17 10:59:20.187] [DEBUG] QUERY OK db=48.3ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "UNKNOWN", "sim_imsi", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306609, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.189] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"} [2026-06-17 10:59:20.223] [DEBUG] QUERY OK db=33.1ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "UNKNOWN", "sim_iccid2", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306610, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.224] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:29Z", "value" => "UNKNOWN"} [2026-06-17 10:59:20.255] [DEBUG] QUERY OK db=31.1ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "UNKNOWN", "sim_imsi2", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306611, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.255] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:29Z", "value" => "7"} [2026-06-17 10:59:20.298] [DEBUG] QUERY OK db=41.9ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "7", "data_usage_mb", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306612, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.299] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:29Z", "value" => "0"} [2026-06-17 10:59:20.321] [DEBUG] QUERY OK db=21.1ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "0", "mobile_data_mb", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306613, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.322] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:20.351] [DEBUG] QUERY OK db=28.7ms queue=0.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39286, ~N[2026-06-17 10:59:20], ~N[2026-06-17 10:59:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:20.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306614, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:29Z", message: nil, status_log_id: 39286, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:20], updated_at: ~N[2026-06-17 10:59:20]}} [2026-06-17 10:59:20.354] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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.`status` IN ('online','Online','connected')) [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 10:59:20.355] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "online", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 10:58:45]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 13, serial_number: "98251226730002", oid: nil, status: "online", model: "kiosk_launcher", vendor: "morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-02-27 05:29:03], updated_at: ~N[2026-06-17 10:59:19]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 19, serial_number: "98250623730001", oid: "organization_id", status: "online", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: "3.8.5", data_version: "1.0.0", system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: "1.0.0", emv_config_version: "1.0.1", keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-25 11:14:09], updated_at: ~N[2026-06-17 10:52:20]}] [2026-06-17 10:59:25.424] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:25.425] [INFO ] Incoming JSON payload: {"oid":"58316b26-a345-443c-a3d4-1f9734c7dec2","sn":"98251226730002","uploadTime":"2026-06-17T10:58:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"ram_free_mb","value":"852","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:35Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:25.428] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "58316b26-a345-443c-a3d4-1f9734c7dec2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:35Z", "value" => "852"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:35Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:35Z", "vendor" => "morefun"} [2026-06-17 10:59:25.429] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:25.429] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:25.429] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:25.432] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.2ms idle=1153.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-06-17 10:59:25.434] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=0.1ms idle=440.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-06-17 10:59:25.434] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:25.438] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=3.2ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:25.439] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:25.492] [DEBUG] QUERY OK source="tms_terminals" db=52.3ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:25.493] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:25.493] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=54.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:25.529] [DEBUG] QUERY OK source="tms_terminals" db=35.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:25.553] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=36.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "58316b26-a345-443c-a3d4-1f9734c7dec2", "2026-06-17T10:58:35Z", ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:25.553] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39287, oid: "58316b26-a345-443c-a3d4-1f9734c7dec2", upload_time: "2026-06-17T10:58:35Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]} [2026-06-17 10:59:25.553] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:35Z", "value" => "morefun"} [2026-06-17 10:59:25.577] [DEBUG] QUERY OK db=23.0ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "morefun", "vendor", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306615, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.577] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:35Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:25.611] [DEBUG] QUERY OK db=33.5ms queue=0.1ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "kiosk_launcher", "model", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306616, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.612] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:35Z", "value" => "1.0"} [2026-06-17 10:59:25.635] [DEBUG] QUERY OK db=22.8ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "1.0", "app_version", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306617, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.635] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:35Z", "value" => "13"} [2026-06-17 10:59:25.658] [DEBUG] QUERY OK db=22.5ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "13", "android_version", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306618, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.658] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:35Z", "value" => "852"} [2026-06-17 10:59:25.681] [DEBUG] QUERY OK db=22.7ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "852", "ram_free_mb", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306619, itemkey: "ram_free_mb", value: "852", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.682] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:35Z", "value" => "WIFI"} [2026-06-17 10:59:25.714] [DEBUG] QUERY OK db=31.8ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "WIFI", "network_type", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306620, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.715] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:35Z", "value" => "true"} [2026-06-17 10:59:25.738] [DEBUG] QUERY OK db=23.1ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "true", "kiosk_active", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306621, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.739] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:35Z", "value" => ""} [2026-06-17 10:59:25.762] [DEBUG] QUERY OK db=23.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:35Z", "sim_operator", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306622, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.763] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"} [2026-06-17 10:59:25.796] [DEBUG] QUERY OK db=33.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "UNKNOWN", "sim_number", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306623, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.797] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"} [2026-06-17 10:59:25.825] [DEBUG] QUERY OK db=27.6ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "UNKNOWN", "sim_iccid", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306624, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.827] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"} [2026-06-17 10:59:25.848] [DEBUG] QUERY OK db=20.7ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "UNKNOWN", "sim_imsi", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306625, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.848] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"} [2026-06-17 10:59:25.872] [DEBUG] QUERY OK db=23.3ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "UNKNOWN", "sim_iccid2", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306626, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.873] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:35Z", "value" => "UNKNOWN"} [2026-06-17 10:59:25.896] [DEBUG] QUERY OK db=22.7ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "UNKNOWN", "sim_imsi2", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306627, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.898] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:35Z", "value" => "7"} [2026-06-17 10:59:25.926] [DEBUG] QUERY OK db=27.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "7", "data_usage_mb", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306628, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.926] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:35Z", "value" => "0"} [2026-06-17 10:59:25.962] [DEBUG] QUERY OK db=31.9ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "0", "mobile_data_mb", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306629, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:25.963] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:25.985] [DEBUG] QUERY OK db=20.5ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39287, ~N[2026-06-17 10:59:25], ~N[2026-06-17 10:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:25.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306630, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:35Z", message: nil, status_log_id: 39287, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:25], updated_at: ~N[2026-06-17 10:59:25]}} [2026-06-17 10:59:26.140] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 32µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZmQmpUdVk0ZjBBdkZDV1pIWTkxc0VRWHcNbm9ub2RlQG5vaG9zdAAACAIAAAAAAAAAAG0AAAAscGh4OmxwOmg2K1d5b0g2UEdHN2NyV2cybWhlcHc9PTE3ODE2OTM0Mzg0ODNuBgAUWjTVngFiABJ1AA.2H6xilo3TyEws9g7cu8lfqdsUD1O_IiJfrf-KoMne9M", "vsn" => "2.0.0"} [2026-06-17 10:59:31.499] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:31.499] [INFO ] Incoming JSON payload: {"oid":"e09fe32c-d0a2-4f11-a312-6a882d0e042a","sn":"98251226730002","uploadTime":"2026-06-17T10:58:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"ram_free_mb","value":"852","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:41Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:31.502] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e09fe32c-d0a2-4f11-a312-6a882d0e042a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:41Z", "value" => "852"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:41Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:41Z", "vendor" => "morefun"} [2026-06-17 10:59:31.502] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:31.502] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:31.502] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:31.504] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=493.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-06-17 10:59:31.504] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=225.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-06-17 10:59:31.504] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:31.505] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:31.505] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:31.529] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:31.529] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:31.530] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:31.554] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:31.577] [DEBUG] QUERY OK db=22.0ms idle=23.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e09fe32c-d0a2-4f11-a312-6a882d0e042a", "2026-06-17T10:58:41Z", ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:31.577] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39288, oid: "e09fe32c-d0a2-4f11-a312-6a882d0e042a", upload_time: "2026-06-17T10:58:41Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]} [2026-06-17 10:59:31.577] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:41Z", "value" => "morefun"} [2026-06-17 10:59:31.600] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "morefun", "vendor", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306631, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.601] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:41Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:31.625] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "kiosk_launcher", "model", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306632, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.625] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:41Z", "value" => "1.0"} [2026-06-17 10:59:31.659] [DEBUG] QUERY OK db=33.0ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "1.0", "app_version", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306633, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.660] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:41Z", "value" => "13"} [2026-06-17 10:59:31.675] [DEBUG] QUERY OK db=13.4ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "13", "android_version", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306634, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.676] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:41Z", "value" => "852"} [2026-06-17 10:59:31.705] [DEBUG] QUERY OK db=28.7ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "852", "ram_free_mb", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306635, itemkey: "ram_free_mb", value: "852", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.705] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:41Z", "value" => "WIFI"} [2026-06-17 10:59:31.729] [DEBUG] QUERY OK db=22.5ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "WIFI", "network_type", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306636, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.729] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:41Z", "value" => "true"} [2026-06-17 10:59:31.752] [DEBUG] QUERY OK db=23.0ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "true", "kiosk_active", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306637, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.753] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:41Z", "value" => ""} [2026-06-17 10:59:31.777] [DEBUG] QUERY OK db=24.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:41Z", "sim_operator", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306638, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.778] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"} [2026-06-17 10:59:31.803] [DEBUG] QUERY OK db=24.6ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "UNKNOWN", "sim_number", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306639, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.803] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"} [2026-06-17 10:59:31.838] [DEBUG] QUERY OK db=34.4ms queue=0.1ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "UNKNOWN", "sim_iccid", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306640, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.838] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"} [2026-06-17 10:59:31.861] [DEBUG] QUERY OK db=22.0ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "UNKNOWN", "sim_imsi", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306641, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.861] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"} [2026-06-17 10:59:31.885] [DEBUG] QUERY OK db=23.2ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "UNKNOWN", "sim_iccid2", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306642, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.885] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:41Z", "value" => "UNKNOWN"} [2026-06-17 10:59:31.913] [DEBUG] QUERY OK db=27.9ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "UNKNOWN", "sim_imsi2", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306643, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.914] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:41Z", "value" => "7"} [2026-06-17 10:59:31.939] [DEBUG] QUERY OK db=24.0ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "7", "data_usage_mb", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306644, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.940] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:41Z", "value" => "0"} [2026-06-17 10:59:31.971] [DEBUG] QUERY OK db=30.6ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "0", "mobile_data_mb", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:31.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306645, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:31.973] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:32.018] [DEBUG] QUERY OK db=43.9ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39288, ~N[2026-06-17 10:59:31], ~N[2026-06-17 10:59:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:32.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306646, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:41Z", message: nil, status_log_id: 39288, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:31], updated_at: ~N[2026-06-17 10:59:31]}} [2026-06-17 10:59:37.673] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:37.673] [INFO ] Incoming JSON payload: {"oid":"81fa5906-6f3c-43fa-ab2a-9dbb2cef6775","sn":"98251226730002","uploadTime":"2026-06-17T10:58:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"ram_free_mb","value":"854","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:47Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:37.676] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "81fa5906-6f3c-43fa-ab2a-9dbb2cef6775", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:47Z", "value" => "854"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:47Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:47Z", "vendor" => "morefun"} [2026-06-17 10:59:37.676] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:37.676] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:37.676] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:37.681] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms queue=0.1ms idle=642.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-06-17 10:59:37.684] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.3ms idle=403.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-06-17 10:59:37.684] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:37.686] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:37.686] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:37.718] [DEBUG] QUERY OK source="tms_terminals" db=31.6ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:37], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:37.718] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:37.719] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=32.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:37.741] [DEBUG] QUERY OK source="tms_terminals" db=20.7ms queue=0.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:37], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:37.775] [DEBUG] QUERY OK db=33.5ms idle=21.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "81fa5906-6f3c-43fa-ab2a-9dbb2cef6775", "2026-06-17T10:58:47Z", ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:37.775] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39289, oid: "81fa5906-6f3c-43fa-ab2a-9dbb2cef6775", upload_time: "2026-06-17T10:58:47Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]} [2026-06-17 10:59:37.775] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:47Z", "value" => "morefun"} [2026-06-17 10:59:37.801] [DEBUG] QUERY OK db=26.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "morefun", "vendor", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:37.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306647, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:37.802] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:47Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:37.819] [DEBUG] QUERY OK db=17.0ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "kiosk_launcher", "model", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:37.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306648, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:37.820] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:47Z", "value" => "1.0"} [2026-06-17 10:59:37.836] [DEBUG] QUERY OK db=16.4ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "1.0", "app_version", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:37.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306649, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:37.838] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:47Z", "value" => "13"} [2026-06-17 10:59:37.871] [DEBUG] QUERY OK db=32.7ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "13", "android_version", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:37.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306650, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:37.872] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:47Z", "value" => "854"} [2026-06-17 10:59:37.917] [DEBUG] QUERY OK db=45.3ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "854", "ram_free_mb", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:37.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306651, itemkey: "ram_free_mb", value: "854", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:37.918] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:47Z", "value" => "WIFI"} [2026-06-17 10:59:37.937] [DEBUG] QUERY OK db=17.8ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "WIFI", "network_type", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:37.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306652, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:37.938] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:47Z", "value" => "true"} [2026-06-17 10:59:37.966] [DEBUG] QUERY OK db=27.7ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "true", "kiosk_active", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:37.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306653, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:37.966] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:47Z", "value" => ""} [2026-06-17 10:59:37.990] [DEBUG] QUERY OK db=23.6ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:47Z", "sim_operator", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:37.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306654, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:37.991] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"} [2026-06-17 10:59:38.014] [DEBUG] QUERY OK db=23.0ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "UNKNOWN", "sim_number", 39289, ~N[2026-06-17 10:59:37], ~N[2026-06-17 10:59:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:38.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306655, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:37], updated_at: ~N[2026-06-17 10:59:37]}} [2026-06-17 10:59:38.016] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"} [2026-06-17 10:59:38.037] [DEBUG] QUERY OK db=19.8ms queue=1.3ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "UNKNOWN", "sim_iccid", 39289, ~N[2026-06-17 10:59:38], ~N[2026-06-17 10:59:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:38.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306656, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:38], updated_at: ~N[2026-06-17 10:59:38]}} [2026-06-17 10:59:38.040] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"} [2026-06-17 10:59:38.064] [DEBUG] QUERY OK db=24.3ms idle=2.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "UNKNOWN", "sim_imsi", 39289, ~N[2026-06-17 10:59:38], ~N[2026-06-17 10:59:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:38.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306657, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:38], updated_at: ~N[2026-06-17 10:59:38]}} [2026-06-17 10:59:38.065] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"} [2026-06-17 10:59:38.103] [DEBUG] QUERY OK db=37.5ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "UNKNOWN", "sim_iccid2", 39289, ~N[2026-06-17 10:59:38], ~N[2026-06-17 10:59:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:38.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306658, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:38], updated_at: ~N[2026-06-17 10:59:38]}} [2026-06-17 10:59:38.103] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:47Z", "value" => "UNKNOWN"} [2026-06-17 10:59:38.127] [DEBUG] QUERY OK db=23.3ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "UNKNOWN", "sim_imsi2", 39289, ~N[2026-06-17 10:59:38], ~N[2026-06-17 10:59:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:38.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306659, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:38], updated_at: ~N[2026-06-17 10:59:38]}} [2026-06-17 10:59:38.128] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:47Z", "value" => "7"} [2026-06-17 10:59:38.153] [DEBUG] QUERY OK db=25.2ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "7", "data_usage_mb", 39289, ~N[2026-06-17 10:59:38], ~N[2026-06-17 10:59:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:38.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306660, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:38], updated_at: ~N[2026-06-17 10:59:38]}} [2026-06-17 10:59:38.154] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:47Z", "value" => "0"} [2026-06-17 10:59:38.186] [DEBUG] QUERY OK db=32.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "0", "mobile_data_mb", 39289, ~N[2026-06-17 10:59:38], ~N[2026-06-17 10:59:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:38.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306661, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:38], updated_at: ~N[2026-06-17 10:59:38]}} [2026-06-17 10:59:38.187] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:38.220] [DEBUG] QUERY OK db=29.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39289, ~N[2026-06-17 10:59:38], ~N[2026-06-17 10:59:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:38.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306662, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:47Z", message: nil, status_log_id: 39289, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:38], updated_at: ~N[2026-06-17 10:59:38]}} [2026-06-17 10:59:43.735] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:43.735] [INFO ] Incoming JSON payload: {"oid":"80954051-a4ca-46d5-936a-d75fadb736f6","sn":"98251226730002","uploadTime":"2026-06-17T10:58:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"ram_free_mb","value":"851","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:53Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:43.736] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "80954051-a4ca-46d5-936a-d75fadb736f6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:53Z", "value" => "851"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:53Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:53Z", "vendor" => "morefun"} [2026-06-17 10:59:43.736] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:43.737] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:43.737] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:43.737] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=668.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-06-17 10:59:43.739] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=458.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-06-17 10:59:43.739] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:43.740] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:43.741] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:43.780] [DEBUG] QUERY OK source="tms_terminals" db=39.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:43.780] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:43.782] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=40.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:43.815] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms queue=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:43.853] [DEBUG] QUERY OK db=37.2ms idle=33.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "80954051-a4ca-46d5-936a-d75fadb736f6", "2026-06-17T10:58:53Z", ~N[2026-06-17 10:59:43], ~N[2026-06-17 10:59:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:43.853] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39290, oid: "80954051-a4ca-46d5-936a-d75fadb736f6", upload_time: "2026-06-17T10:58:53Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:43], updated_at: ~N[2026-06-17 10:59:43]} [2026-06-17 10:59:43.853] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:53Z", "value" => "morefun"} [2026-06-17 10:59:43.893] [DEBUG] QUERY OK db=39.3ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "morefun", "vendor", 39290, ~N[2026-06-17 10:59:43], ~N[2026-06-17 10:59:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:43.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306663, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:43], updated_at: ~N[2026-06-17 10:59:43]}} [2026-06-17 10:59:43.894] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:53Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:43.940] [DEBUG] QUERY OK db=45.9ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "kiosk_launcher", "model", 39290, ~N[2026-06-17 10:59:43], ~N[2026-06-17 10:59:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:43.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306664, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:43], updated_at: ~N[2026-06-17 10:59:43]}} [2026-06-17 10:59:43.940] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:53Z", "value" => "1.0"} [2026-06-17 10:59:43.974] [DEBUG] QUERY OK db=33.7ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "1.0", "app_version", 39290, ~N[2026-06-17 10:59:43], ~N[2026-06-17 10:59:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:43.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306665, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:43], updated_at: ~N[2026-06-17 10:59:43]}} [2026-06-17 10:59:43.975] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:53Z", "value" => "13"} [2026-06-17 10:59:44.014] [DEBUG] QUERY OK db=37.7ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "13", "android_version", 39290, ~N[2026-06-17 10:59:43], ~N[2026-06-17 10:59:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306666, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:43], updated_at: ~N[2026-06-17 10:59:43]}} [2026-06-17 10:59:44.014] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:53Z", "value" => "851"} [2026-06-17 10:59:44.058] [DEBUG] QUERY OK db=43.3ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "851", "ram_free_mb", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306667, itemkey: "ram_free_mb", value: "851", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.058] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:53Z", "value" => "WIFI"} [2026-06-17 10:59:44.099] [DEBUG] QUERY OK db=40.2ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "WIFI", "network_type", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306668, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.099] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:53Z", "value" => "true"} [2026-06-17 10:59:44.168] [DEBUG] QUERY OK db=67.2ms queue=0.1ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "true", "kiosk_active", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306669, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.168] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:53Z", "value" => ""} [2026-06-17 10:59:44.221] [DEBUG] QUERY OK db=51.8ms idle=70.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:53Z", "sim_operator", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306670, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.221] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"} [2026-06-17 10:59:44.257] [DEBUG] QUERY OK db=32.9ms queue=1.6ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "UNKNOWN", "sim_number", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306671, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.257] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"} [2026-06-17 10:59:44.299] [DEBUG] QUERY OK db=41.0ms idle=10.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "UNKNOWN", "sim_iccid", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306672, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.299] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"} [2026-06-17 10:59:44.343] [DEBUG] QUERY OK db=43.8ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "UNKNOWN", "sim_imsi", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306673, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.344] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"} [2026-06-17 10:59:44.381] [DEBUG] QUERY OK db=36.7ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "UNKNOWN", "sim_iccid2", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306674, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.381] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:53Z", "value" => "UNKNOWN"} [2026-06-17 10:59:44.421] [DEBUG] QUERY OK db=39.7ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "UNKNOWN", "sim_imsi2", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306675, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.422] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:53Z", "value" => "7"} [2026-06-17 10:59:44.456] [DEBUG] QUERY OK db=33.1ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "7", "data_usage_mb", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306676, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.456] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:53Z", "value" => "0"} [2026-06-17 10:59:44.482] [DEBUG] QUERY OK db=26.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "0", "mobile_data_mb", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306677, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:44.483] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:44.530] [DEBUG] QUERY OK db=45.5ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39290, ~N[2026-06-17 10:59:44], ~N[2026-06-17 10:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:44.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306678, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:53Z", message: nil, status_log_id: 39290, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:44], updated_at: ~N[2026-06-17 10:59:44]}} [2026-06-17 10:59:49.819] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:49.819] [INFO ] Incoming JSON payload: {"oid":"c9c855a0-6285-47a1-9e5c-90c6d6a6b10d","sn":"98251226730002","uploadTime":"2026-06-17T10:58:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"ram_free_mb","value":"850","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:58:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:58:59Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:49.821] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c9c855a0-6285-47a1-9e5c-90c6d6a6b10d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:59Z", "value" => "850"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:59Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:58:59Z", "vendor" => "morefun"} [2026-06-17 10:59:49.821] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:49.821] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:49.821] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:49.822] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=731.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-06-17 10:59:49.826] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.8ms idle=543.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-06-17 10:59:49.826] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:49.828] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:49.828] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:49.867] [DEBUG] QUERY OK source="tms_terminals" db=37.7ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:49.868] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:49.869] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=39.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:49.935] [DEBUG] QUERY OK source="tms_terminals" db=65.6ms queue=0.1ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:49.980] [DEBUG] QUERY OK db=43.8ms idle=66.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c9c855a0-6285-47a1-9e5c-90c6d6a6b10d", "2026-06-17T10:58:59Z", ~N[2026-06-17 10:59:49], ~N[2026-06-17 10:59:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:49.980] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39291, oid: "c9c855a0-6285-47a1-9e5c-90c6d6a6b10d", upload_time: "2026-06-17T10:58:59Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:49], updated_at: ~N[2026-06-17 10:59:49]} [2026-06-17 10:59:49.980] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:58:59Z", "value" => "morefun"} [2026-06-17 10:59:50.030] [DEBUG] QUERY OK db=48.9ms queue=0.1ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "morefun", "vendor", 39291, ~N[2026-06-17 10:59:49], ~N[2026-06-17 10:59:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306679, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:49], updated_at: ~N[2026-06-17 10:59:49]}} [2026-06-17 10:59:50.030] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:58:59Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:50.102] [DEBUG] QUERY OK db=71.8ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "kiosk_launcher", "model", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306680, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.103] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:58:59Z", "value" => "1.0"} [2026-06-17 10:59:50.145] [DEBUG] QUERY OK db=41.7ms idle=11.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "1.0", "app_version", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306681, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.146] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:58:59Z", "value" => "13"} [2026-06-17 10:59:50.193] [DEBUG] QUERY OK db=45.2ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "13", "android_version", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306682, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.194] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:58:59Z", "value" => "850"} [2026-06-17 10:59:50.229] [DEBUG] QUERY OK db=34.4ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "850", "ram_free_mb", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306683, itemkey: "ram_free_mb", value: "850", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.229] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:58:59Z", "value" => "WIFI"} [2026-06-17 10:59:50.265] [DEBUG] QUERY OK db=34.6ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "WIFI", "network_type", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.265] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306684, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.265] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:58:59Z", "value" => "true"} [2026-06-17 10:59:50.288] [DEBUG] QUERY OK db=22.6ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "true", "kiosk_active", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306685, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.288] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:58:59Z", "value" => ""} [2026-06-17 10:59:50.313] [DEBUG] QUERY OK db=23.5ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:58:59Z", "sim_operator", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306686, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.315] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"} [2026-06-17 10:59:50.353] [DEBUG] QUERY OK db=37.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "UNKNOWN", "sim_number", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306687, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.353] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"} [2026-06-17 10:59:50.385] [DEBUG] QUERY OK db=31.3ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "UNKNOWN", "sim_iccid", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306688, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.385] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"} [2026-06-17 10:59:50.425] [DEBUG] QUERY OK db=39.5ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "UNKNOWN", "sim_imsi", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306689, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.425] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"} [2026-06-17 10:59:50.459] [DEBUG] QUERY OK db=33.2ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "UNKNOWN", "sim_iccid2", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306690, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.460] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:58:59Z", "value" => "UNKNOWN"} [2026-06-17 10:59:50.493] [DEBUG] QUERY OK db=33.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "UNKNOWN", "sim_imsi2", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306691, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.498] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:58:59Z", "value" => "7"} [2026-06-17 10:59:50.530] [DEBUG] QUERY OK db=32.4ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "7", "data_usage_mb", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306692, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.531] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:58:59Z", "value" => "0"} [2026-06-17 10:59:50.555] [DEBUG] QUERY OK db=23.7ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "0", "mobile_data_mb", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306693, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:50.559] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:58:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:50.595] [DEBUG] QUERY OK db=34.5ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:58:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39291, ~N[2026-06-17 10:59:50], ~N[2026-06-17 10:59:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:50.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306694, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:58:59Z", message: nil, status_log_id: 39291, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:50], updated_at: ~N[2026-06-17 10:59:50]}} [2026-06-17 10:59:55.900] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 10:59:55.900] [INFO ] Incoming JSON payload: {"oid":"d9f2e485-0a27-4411-9507-b3258b383004","sn":"98251226730002","uploadTime":"2026-06-17T10:59:05Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"ram_free_mb","value":"854","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:05Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59:05Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 10:59:55.902] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d9f2e485-0a27-4411-9507-b3258b383004", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:05Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:05Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:05Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:05Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:05Z", "value" => "854"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:05Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:05Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:05Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:05Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:05Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:05Z", "vendor" => "morefun"} [2026-06-17 10:59:55.903] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 10:59:55.903] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 10:59:55.903] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 10:59:55.904] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=0.1ms idle=1622.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-06-17 10:59:55.905] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=794.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-06-17 10:59:55.905] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 10:59:55.908] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 10:59:55.908] [INFO ] Terminal updated: 98251226730002 [2026-06-17 10:59:55.930] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 10:59:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 10:59:55.930] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 10:59:55.931] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=22.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 10:59:55.962] [DEBUG] QUERY OK source="tms_terminals" db=30.6ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 10:59:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 10:59:55.987] [DEBUG] QUERY OK db=24.5ms idle=31.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d9f2e485-0a27-4411-9507-b3258b383004", "2026-06-17T10:59:05Z", ~N[2026-06-17 10:59:55], ~N[2026-06-17 10:59:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 10:59:55.987] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39292, oid: "d9f2e485-0a27-4411-9507-b3258b383004", upload_time: "2026-06-17T10:59:05Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:55], updated_at: ~N[2026-06-17 10:59:55]} [2026-06-17 10:59:55.987] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:05Z", "value" => "morefun"} [2026-06-17 10:59:56.013] [DEBUG] QUERY OK db=25.7ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "morefun", "vendor", 39292, ~N[2026-06-17 10:59:55], ~N[2026-06-17 10:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306695, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:55], updated_at: ~N[2026-06-17 10:59:55]}} [2026-06-17 10:59:56.014] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:05Z", "value" => "kiosk_launcher"} [2026-06-17 10:59:56.048] [DEBUG] QUERY OK db=33.7ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "kiosk_launcher", "model", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306696, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.048] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:05Z", "value" => "1.0"} [2026-06-17 10:59:56.084] [DEBUG] QUERY OK db=34.9ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "1.0", "app_version", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306697, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.089] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:05Z", "value" => "13"} [2026-06-17 10:59:56.124] [DEBUG] QUERY OK db=34.5ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "13", "android_version", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.124] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306698, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.124] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:05Z", "value" => "854"} [2026-06-17 10:59:56.162] [DEBUG] QUERY OK db=37.2ms idle=8.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "854", "ram_free_mb", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306699, itemkey: "ram_free_mb", value: "854", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.162] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:05Z", "value" => "WIFI"} [2026-06-17 10:59:56.192] [DEBUG] QUERY OK db=29.7ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "WIFI", "network_type", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306700, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.192] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:05Z", "value" => "true"} [2026-06-17 10:59:56.239] [DEBUG] QUERY OK db=39.2ms queue=4.8ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "true", "kiosk_active", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306701, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.240] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:05Z", "value" => ""} [2026-06-17 10:59:56.271] [DEBUG] QUERY OK db=28.6ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:05Z", "sim_operator", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306702, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.272] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"} [2026-06-17 10:59:56.287] [DEBUG] QUERY OK db=14.0ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "UNKNOWN", "sim_number", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306703, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.288] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"} [2026-06-17 10:59:56.309] [DEBUG] QUERY OK db=20.0ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "UNKNOWN", "sim_iccid", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306704, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.310] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"} [2026-06-17 10:59:56.346] [DEBUG] QUERY OK db=34.5ms queue=0.1ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "UNKNOWN", "sim_imsi", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.346] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306705, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.346] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"} [2026-06-17 10:59:56.377] [DEBUG] QUERY OK db=28.9ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "UNKNOWN", "sim_iccid2", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306706, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.379] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:05Z", "value" => "UNKNOWN"} [2026-06-17 10:59:56.402] [DEBUG] QUERY OK db=23.1ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "UNKNOWN", "sim_imsi2", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306707, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.402] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:05Z", "value" => "7"} [2026-06-17 10:59:56.418] [DEBUG] QUERY OK db=15.6ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "7", "data_usage_mb", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306708, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.419] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:05Z", "value" => "0"} [2026-06-17 10:59:56.456] [DEBUG] QUERY OK db=36.1ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "0", "mobile_data_mb", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306709, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 10:59:56.457] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 10:59:56.491] [DEBUG] QUERY OK db=32.3ms queue=0.4ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39292, ~N[2026-06-17 10:59:56], ~N[2026-06-17 10:59:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 10:59:56.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306710, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:05Z", message: nil, status_log_id: 39292, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 10:59:56], updated_at: ~N[2026-06-17 10:59:56]}} [2026-06-17 11:00:00.855] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 33µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZmQmpUdVk0ZjBBdkZDV1pIWTkxc0VRWHcNbm9ub2RlQG5vaG9zdAAAFb8AAAAAAAAAAG0AAAAscGh4OmxwOmhXcWxUOTZNRy95a0hqYWpjYUtaMEE9PTE3ODE2OTM5NjYxMzluBgBAZzzVngFiABJ1AA.14ELsaf8bLcz_t9NDx052BfexKX0NnHzL-ToMe7xc-4", "vsn" => "2.0.0"} [2026-06-17 11:00:02.259] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:02.259] [INFO ] Incoming JSON payload: {"oid":"e63a952c-53b7-4d0a-af4f-b2cdc5d710a3","sn":"98251226730002","uploadTime":"2026-06-17T10:59:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"ram_free_mb","value":"855","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:02.266] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e63a952c-53b7-4d0a-af4f-b2cdc5d710a3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:11Z", "value" => "855"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:11Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:11Z", "vendor" => "morefun"} [2026-06-17 11:00:02.267] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:02.267] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:02.267] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:02.270] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=1135.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-06-17 11:00:02.273] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=123.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.`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-06-17 11:00:02.273] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:02.277] [DEBUG] QUERY OK source="tms_terminals" db=4.1ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:02.277] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:02.314] [DEBUG] QUERY OK source="tms_terminals" db=36.0ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:02.314] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:02.317] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=37.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:02.343] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:02.362] [DEBUG] QUERY OK db=19.2ms idle=25.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e63a952c-53b7-4d0a-af4f-b2cdc5d710a3", "2026-06-17T10:59:11Z", ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:02.363] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39293, oid: "e63a952c-53b7-4d0a-af4f-b2cdc5d710a3", upload_time: "2026-06-17T10:59:11Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]} [2026-06-17 11:00:02.363] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:11Z", "value" => "morefun"} [2026-06-17 11:00:02.394] [DEBUG] QUERY OK db=28.9ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "morefun", "vendor", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306711, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.394] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:11Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:02.430] [DEBUG] QUERY OK db=35.4ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "kiosk_launcher", "model", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306712, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.430] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:11Z", "value" => "1.0"} [2026-06-17 11:00:02.453] [DEBUG] QUERY OK db=22.3ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "1.0", "app_version", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306713, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.453] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:11Z", "value" => "13"} [2026-06-17 11:00:02.466] [DEBUG] QUERY OK db=12.0ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "13", "android_version", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306714, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.466] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:11Z", "value" => "855"} [2026-06-17 11:00:02.500] [DEBUG] QUERY OK db=33.1ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "855", "ram_free_mb", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306715, itemkey: "ram_free_mb", value: "855", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.500] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:11Z", "value" => "WIFI"} [2026-06-17 11:00:02.530] [DEBUG] QUERY OK db=29.5ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "WIFI", "network_type", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306716, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.531] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:11Z", "value" => "true"} [2026-06-17 11:00:02.563] [DEBUG] QUERY OK db=31.2ms queue=1.2ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "true", "kiosk_active", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306717, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.564] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:11Z", "value" => ""} [2026-06-17 11:00:02.584] [DEBUG] QUERY OK db=20.0ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:11Z", "sim_operator", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306718, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.584] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"} [2026-06-17 11:00:02.609] [DEBUG] QUERY OK db=23.9ms queue=0.1ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "UNKNOWN", "sim_number", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306719, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.613] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"} [2026-06-17 11:00:02.646] [DEBUG] QUERY OK db=32.4ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "UNKNOWN", "sim_iccid", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306720, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.646] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"} [2026-06-17 11:00:02.673] [DEBUG] QUERY OK db=26.4ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "UNKNOWN", "sim_imsi", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306721, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.673] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"} [2026-06-17 11:00:02.697] [DEBUG] QUERY OK db=23.4ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "UNKNOWN", "sim_iccid2", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306722, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.698] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:11Z", "value" => "UNKNOWN"} [2026-06-17 11:00:02.730] [DEBUG] QUERY OK db=24.8ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "UNKNOWN", "sim_imsi2", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306723, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.731] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:11Z", "value" => "7"} [2026-06-17 11:00:02.773] [DEBUG] QUERY OK db=39.0ms queue=3.1ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "7", "data_usage_mb", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306724, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.774] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:11Z", "value" => "0"} [2026-06-17 11:00:02.808] [DEBUG] QUERY OK db=34.2ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:11Z", "0", "mobile_data_mb", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306725, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:02.809] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:02.825] [DEBUG] QUERY OK db=14.8ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39293, ~N[2026-06-17 11:00:02], ~N[2026-06-17 11:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:02.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306726, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:11Z", message: nil, status_log_id: 39293, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:02], updated_at: ~N[2026-06-17 11:00:02]}} [2026-06-17 11:00:08.305] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:08.305] [INFO ] Incoming JSON payload: {"oid":"b244f092-6926-4607-82ac-77d710813934","sn":"98251226730002","uploadTime":"2026-06-17T10:59:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"ram_free_mb","value":"853","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:08.306] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b244f092-6926-4607-82ac-77d710813934", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:18Z", "value" => "853"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:18Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:18Z", "vendor" => "morefun"} [2026-06-17 11:00:08.306] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:08.306] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:08.306] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:08.313] [DEBUG] QUERY OK source="parameter_templates" db=6.6ms idle=133.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-06-17 11:00:08.314] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=22.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-06-17 11:00:08.314] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:08.319] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:08.319] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:08.369] [DEBUG] QUERY OK source="tms_terminals" db=49.6ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:08.370] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:08.377] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=50.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:08.392] [DEBUG] QUERY OK source="tms_terminals" db=13.6ms queue=0.2ms idle=8.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:08.439] [DEBUG] QUERY OK db=46.4ms idle=19.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b244f092-6926-4607-82ac-77d710813934", "2026-06-17T10:59:18Z", ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:08.440] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39294, oid: "b244f092-6926-4607-82ac-77d710813934", upload_time: "2026-06-17T10:59:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]} [2026-06-17 11:00:08.440] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:18Z", "value" => "morefun"} [2026-06-17 11:00:08.485] [DEBUG] QUERY OK db=44.7ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "morefun", "vendor", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306727, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.486] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:18Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:08.529] [DEBUG] QUERY OK db=41.3ms queue=1.7ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "kiosk_launcher", "model", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306728, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.530] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:18Z", "value" => "1.0"} [2026-06-17 11:00:08.572] [DEBUG] QUERY OK db=34.7ms queue=6.8ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "1.0", "app_version", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306729, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.572] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:18Z", "value" => "13"} [2026-06-17 11:00:08.600] [DEBUG] QUERY OK db=26.2ms queue=1.4ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "13", "android_version", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306730, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.600] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:18Z", "value" => "853"} [2026-06-17 11:00:08.640] [DEBUG] QUERY OK db=39.4ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "853", "ram_free_mb", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306731, itemkey: "ram_free_mb", value: "853", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.640] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:18Z", "value" => "WIFI"} [2026-06-17 11:00:08.669] [DEBUG] QUERY OK db=28.5ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "WIFI", "network_type", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306732, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.670] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:18Z", "value" => "true"} [2026-06-17 11:00:08.717] [DEBUG] QUERY OK db=46.4ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "true", "kiosk_active", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306733, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.717] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:18Z", "value" => ""} [2026-06-17 11:00:08.758] [DEBUG] QUERY OK db=40.8ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:18Z", "sim_operator", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306734, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.759] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"} [2026-06-17 11:00:08.802] [DEBUG] QUERY OK db=43.2ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "UNKNOWN", "sim_number", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306735, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.802] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"} [2026-06-17 11:00:08.834] [DEBUG] QUERY OK db=31.0ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "UNKNOWN", "sim_iccid", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306736, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.835] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"} [2026-06-17 11:00:08.857] [DEBUG] QUERY OK db=21.5ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "UNKNOWN", "sim_imsi", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306737, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.858] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"} [2026-06-17 11:00:08.952] [DEBUG] QUERY OK db=93.6ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "UNKNOWN", "sim_iccid2", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:08.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306738, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:08.952] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:18Z", "value" => "UNKNOWN"} [2026-06-17 11:00:09.040] [DEBUG] QUERY OK db=86.9ms idle=95.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "UNKNOWN", "sim_imsi2", 39294, ~N[2026-06-17 11:00:08], ~N[2026-06-17 11:00:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:09.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306739, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:08], updated_at: ~N[2026-06-17 11:00:08]}} [2026-06-17 11:00:09.040] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:18Z", "value" => "7"} [2026-06-17 11:00:09.072] [DEBUG] QUERY OK db=31.8ms idle=88.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "7", "data_usage_mb", 39294, ~N[2026-06-17 11:00:09], ~N[2026-06-17 11:00:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:09.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306740, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:09], updated_at: ~N[2026-06-17 11:00:09]}} [2026-06-17 11:00:09.072] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:18Z", "value" => "0"} [2026-06-17 11:00:09.084] [DEBUG] QUERY OK db=11.4ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:18Z", "0", "mobile_data_mb", 39294, ~N[2026-06-17 11:00:09], ~N[2026-06-17 11:00:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:09.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306741, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:09], updated_at: ~N[2026-06-17 11:00:09]}} [2026-06-17 11:00:09.087] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:09.104] [DEBUG] QUERY OK db=16.2ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39294, ~N[2026-06-17 11:00:09], ~N[2026-06-17 11:00:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:09.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306742, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:18Z", message: nil, status_log_id: 39294, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:09], updated_at: ~N[2026-06-17 11:00:09]}} [2026-06-17 11:00:14.384] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:14.384] [INFO ] Incoming JSON payload: {"oid":"9cbd0e6a-802b-41aa-ab44-c199f812d1c8","sn":"98251226730002","uploadTime":"2026-06-17T10:59:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"ram_free_mb","value":"854","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59:24Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:14.387] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9cbd0e6a-802b-41aa-ab44-c199f812d1c8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:24Z", "value" => "854"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:24Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:24Z", "vendor" => "morefun"} [2026-06-17 11:00:14.388] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:14.388] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:14.389] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:14.391] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.3ms idle=194.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-06-17 11:00:14.392] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=93.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.`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-06-17 11:00:14.392] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:14.395] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:14.396] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:14.421] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:14.422] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:14.425] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:14.454] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms queue=2.7ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:14.473] [DEBUG] QUERY OK db=17.1ms idle=29.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "9cbd0e6a-802b-41aa-ab44-c199f812d1c8", "2026-06-17T10:59:24Z", ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:14.473] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39295, oid: "9cbd0e6a-802b-41aa-ab44-c199f812d1c8", upload_time: "2026-06-17T10:59:24Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]} [2026-06-17 11:00:14.474] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:24Z", "value" => "morefun"} [2026-06-17 11:00:14.494] [DEBUG] QUERY OK db=19.8ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "morefun", "vendor", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306743, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.494] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:24Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:14.530] [DEBUG] QUERY OK db=35.9ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "kiosk_launcher", "model", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306744, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.531] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:24Z", "value" => "1.0"} [2026-06-17 11:00:14.552] [DEBUG] QUERY OK db=20.5ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "1.0", "app_version", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306745, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.553] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:24Z", "value" => "13"} [2026-06-17 11:00:14.565] [DEBUG] QUERY OK db=10.9ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "13", "android_version", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306746, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.565] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:24Z", "value" => "854"} [2026-06-17 11:00:14.577] [DEBUG] QUERY OK db=11.7ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "854", "ram_free_mb", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306747, itemkey: "ram_free_mb", value: "854", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.578] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:24Z", "value" => "WIFI"} [2026-06-17 11:00:14.609] [DEBUG] QUERY OK db=30.6ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "WIFI", "network_type", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306748, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.610] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:24Z", "value" => "true"} [2026-06-17 11:00:14.642] [DEBUG] QUERY OK db=32.2ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "true", "kiosk_active", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306749, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.642] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:24Z", "value" => ""} [2026-06-17 11:00:14.658] [DEBUG] QUERY OK db=15.3ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:24Z", "sim_operator", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306750, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.659] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"} [2026-06-17 11:00:14.676] [DEBUG] QUERY OK db=17.3ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "UNKNOWN", "sim_number", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306751, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.677] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"} [2026-06-17 11:00:14.698] [DEBUG] QUERY OK db=19.7ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "UNKNOWN", "sim_iccid", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306752, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.699] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"} [2026-06-17 11:00:14.732] [DEBUG] QUERY OK db=32.8ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "UNKNOWN", "sim_imsi", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306753, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.732] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"} [2026-06-17 11:00:14.752] [DEBUG] QUERY OK db=19.8ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "UNKNOWN", "sim_iccid2", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306754, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.753] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:24Z", "value" => "UNKNOWN"} [2026-06-17 11:00:14.769] [DEBUG] QUERY OK db=15.5ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "UNKNOWN", "sim_imsi2", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306755, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.770] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:24Z", "value" => "7"} [2026-06-17 11:00:14.795] [DEBUG] QUERY OK db=24.4ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "7", "data_usage_mb", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306756, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.795] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:24Z", "value" => "0"} [2026-06-17 11:00:14.829] [DEBUG] QUERY OK db=33.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "0", "mobile_data_mb", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306757, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:14.833] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:14.856] [DEBUG] QUERY OK db=22.0ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39295, ~N[2026-06-17 11:00:14], ~N[2026-06-17 11:00:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:14.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306758, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:24Z", message: nil, status_log_id: 39295, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:14], updated_at: ~N[2026-06-17 11:00:14]}} [2026-06-17 11:00:17.109] [INFO ] Running offline device check... [2026-06-17 11:00:17.109] [INFO ] Starting offline device check... [2026-06-17 11:00:17.110] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=908.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:679 [2026-06-17 11:00:17.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms idle=823.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:694 [2026-06-17 11:00:17.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=8.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:694 [2026-06-17 11:00:17.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.127] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.128] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms 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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.135] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.136] [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:694 [2026-06-17 11:00:17.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms queue=0.5ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms queue=0.1ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.182] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.4ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.185] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.198] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms idle=13.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:694 [2026-06-17 11:00:17.212] [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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.215] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=1.8ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.222] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.226] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.0ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.288] [DEBUG] QUERY OK source="tms_terminals" db=44.5ms idle=17.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:17], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 11:00:17.288] [INFO ] Terminal 98251226730001 back online [2026-06-17 11:00:17.291] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=47.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:694 [2026-06-17 11:00:17.295] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms queue=0.3ms 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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.307] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=10.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:694 [2026-06-17 11:00:17.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=2.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.317] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.324] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms queue=1.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.326] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.329] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.330] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.332] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.335] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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:694 [2026-06-17 11:00:17.338] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.341] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:00:17.341] [INFO ] Offline device check completed. Found 35 offline devices, updated 1 statuses. [2026-06-17 11:00:17.341] [INFO ] Offline device check completed successfully [2026-06-17 11:00:20.721] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:20.721] [INFO ] Incoming JSON payload: {"oid":"17f72e79-cfe3-48f9-8518-38a09d8e8d7b","sn":"98251226730002","uploadTime":"2026-06-17T10:59:30Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"ram_free_mb","value":"854","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:30Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59:30Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:20.722] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "17f72e79-cfe3-48f9-8518-38a09d8e8d7b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:30Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:30Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:30Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:30Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:30Z", "value" => "854"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:30Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:30Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:30Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:30Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:30Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:30Z", "vendor" => "morefun"} [2026-06-17 11:00:20.722] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:20.722] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:20.723] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:20.724] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1434.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-06-17 11:00:20.727] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=504.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-06-17 11:00:20.727] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:20.728] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:20.729] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:20.752] [DEBUG] QUERY OK source="tms_terminals" db=22.7ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:20.752] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:20.753] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:20.766] [DEBUG] QUERY OK source="tms_terminals" db=12.0ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:20.791] [DEBUG] QUERY OK db=24.6ms queue=0.1ms idle=12.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "17f72e79-cfe3-48f9-8518-38a09d8e8d7b", "2026-06-17T10:59:30Z", ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:20.791] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39296, oid: "17f72e79-cfe3-48f9-8518-38a09d8e8d7b", upload_time: "2026-06-17T10:59:30Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]} [2026-06-17 11:00:20.791] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:30Z", "value" => "morefun"} [2026-06-17 11:00:20.816] [DEBUG] QUERY OK db=24.3ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "morefun", "vendor", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306759, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.816] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:30Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:20.850] [DEBUG] QUERY OK db=33.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "kiosk_launcher", "model", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306760, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.851] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:30Z", "value" => "1.0"} [2026-06-17 11:00:20.868] [DEBUG] QUERY OK db=17.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "1.0", "app_version", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306761, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.868] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:30Z", "value" => "13"} [2026-06-17 11:00:20.881] [DEBUG] QUERY OK db=12.2ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "13", "android_version", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306762, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.881] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:30Z", "value" => "854"} [2026-06-17 11:00:20.906] [DEBUG] QUERY OK db=21.5ms queue=2.4ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "854", "ram_free_mb", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306763, itemkey: "ram_free_mb", value: "854", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.906] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:30Z", "value" => "WIFI"} [2026-06-17 11:00:20.930] [DEBUG] QUERY OK db=23.6ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "WIFI", "network_type", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306764, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.930] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:30Z", "value" => "true"} [2026-06-17 11:00:20.965] [DEBUG] QUERY OK db=33.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "true", "kiosk_active", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306765, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.965] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:30Z", "value" => ""} [2026-06-17 11:00:20.982] [DEBUG] QUERY OK db=16.6ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:30Z", "sim_operator", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306766, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.982] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"} [2026-06-17 11:00:20.995] [DEBUG] QUERY OK db=11.9ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "UNKNOWN", "sim_number", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:20.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306767, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:20.995] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"} [2026-06-17 11:00:21.030] [DEBUG] QUERY OK db=31.6ms queue=2.8ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "UNKNOWN", "sim_iccid", 39296, ~N[2026-06-17 11:00:20], ~N[2026-06-17 11:00:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:21.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306768, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:20], updated_at: ~N[2026-06-17 11:00:20]}} [2026-06-17 11:00:21.030] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"} [2026-06-17 11:00:21.064] [DEBUG] QUERY OK db=33.5ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "UNKNOWN", "sim_imsi", 39296, ~N[2026-06-17 11:00:21], ~N[2026-06-17 11:00:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:21.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306769, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:21], updated_at: ~N[2026-06-17 11:00:21]}} [2026-06-17 11:00:21.065] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"} [2026-06-17 11:00:21.083] [DEBUG] QUERY OK db=18.0ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "UNKNOWN", "sim_iccid2", 39296, ~N[2026-06-17 11:00:21], ~N[2026-06-17 11:00:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:21.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306770, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:21], updated_at: ~N[2026-06-17 11:00:21]}} [2026-06-17 11:00:21.083] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:30Z", "value" => "UNKNOWN"} [2026-06-17 11:00:21.098] [DEBUG] QUERY OK db=14.5ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "UNKNOWN", "sim_imsi2", 39296, ~N[2026-06-17 11:00:21], ~N[2026-06-17 11:00:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:21.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306771, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:21], updated_at: ~N[2026-06-17 11:00:21]}} [2026-06-17 11:00:21.099] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:30Z", "value" => "7"} [2026-06-17 11:00:21.124] [DEBUG] QUERY OK db=25.1ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "7", "data_usage_mb", 39296, ~N[2026-06-17 11:00:21], ~N[2026-06-17 11:00:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:21.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306772, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:21], updated_at: ~N[2026-06-17 11:00:21]}} [2026-06-17 11:00:21.127] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:30Z", "value" => "0"} [2026-06-17 11:00:21.163] [DEBUG] QUERY OK db=35.1ms queue=0.1ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "0", "mobile_data_mb", 39296, ~N[2026-06-17 11:00:21], ~N[2026-06-17 11:00:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:21.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306773, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:21], updated_at: ~N[2026-06-17 11:00:21]}} [2026-06-17 11:00:21.164] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:21.190] [DEBUG] QUERY OK db=25.1ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:30Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39296, ~N[2026-06-17 11:00:21], ~N[2026-06-17 11:00:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:21.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306774, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:30Z", message: nil, status_log_id: 39296, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:21], updated_at: ~N[2026-06-17 11:00:21]}} [2026-06-17 11:00:26.792] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:26.792] [INFO ] Incoming JSON payload: {"oid":"afabcace-19fa-4c95-94cc-52e1b9b1cc6e","sn":"98251226730002","uploadTime":"2026-06-17T10:59:36Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"ram_free_mb","value":"852","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:36Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59:36Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:26.793] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "afabcace-19fa-4c95-94cc-52e1b9b1cc6e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:36Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:36Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:36Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:36Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:36Z", "value" => "852"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:36Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:36Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:36Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:36Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:36Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:36Z", "vendor" => "morefun"} [2026-06-17 11:00:26.793] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:26.793] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:26.793] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:26.794] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=557.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-06-17 11:00:26.795] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=506.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-06-17 11:00:26.795] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:26.796] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:26.796] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:26.815] [DEBUG] QUERY OK source="tms_terminals" db=18.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:26.815] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:26.816] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=19.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:26.861] [DEBUG] QUERY OK source="tms_terminals" db=45.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:26.893] [DEBUG] QUERY OK db=31.6ms idle=45.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "afabcace-19fa-4c95-94cc-52e1b9b1cc6e", "2026-06-17T10:59:36Z", ~N[2026-06-17 11:00:26], ~N[2026-06-17 11:00:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:26.894] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39297, oid: "afabcace-19fa-4c95-94cc-52e1b9b1cc6e", upload_time: "2026-06-17T10:59:36Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:26], updated_at: ~N[2026-06-17 11:00:26]} [2026-06-17 11:00:26.894] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:36Z", "value" => "morefun"} [2026-06-17 11:00:26.917] [DEBUG] QUERY OK db=22.4ms queue=0.1ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "morefun", "vendor", 39297, ~N[2026-06-17 11:00:26], ~N[2026-06-17 11:00:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:26.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306775, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:26], updated_at: ~N[2026-06-17 11:00:26]}} [2026-06-17 11:00:26.917] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:36Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:26.940] [DEBUG] QUERY OK db=22.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "kiosk_launcher", "model", 39297, ~N[2026-06-17 11:00:26], ~N[2026-06-17 11:00:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:26.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306776, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:26], updated_at: ~N[2026-06-17 11:00:26]}} [2026-06-17 11:00:26.942] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:36Z", "value" => "1.0"} [2026-06-17 11:00:26.959] [DEBUG] QUERY OK db=16.7ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "1.0", "app_version", 39297, ~N[2026-06-17 11:00:26], ~N[2026-06-17 11:00:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:26.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306777, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:26], updated_at: ~N[2026-06-17 11:00:26]}} [2026-06-17 11:00:26.959] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:36Z", "value" => "13"} [2026-06-17 11:00:26.979] [DEBUG] QUERY OK db=19.2ms queue=0.1ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "13", "android_version", 39297, ~N[2026-06-17 11:00:26], ~N[2026-06-17 11:00:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:26.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306778, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:26], updated_at: ~N[2026-06-17 11:00:26]}} [2026-06-17 11:00:26.980] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:36Z", "value" => "852"} [2026-06-17 11:00:27.012] [DEBUG] QUERY OK db=30.6ms queue=0.3ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "852", "ram_free_mb", 39297, ~N[2026-06-17 11:00:26], ~N[2026-06-17 11:00:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306779, itemkey: "ram_free_mb", value: "852", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:26], updated_at: ~N[2026-06-17 11:00:26]}} [2026-06-17 11:00:27.012] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:36Z", "value" => "WIFI"} [2026-06-17 11:00:27.041] [DEBUG] QUERY OK db=28.7ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "WIFI", "network_type", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306780, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.042] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:36Z", "value" => "true"} [2026-06-17 11:00:27.077] [DEBUG] QUERY OK db=34.7ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "true", "kiosk_active", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306781, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.077] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:36Z", "value" => ""} [2026-06-17 11:00:27.096] [DEBUG] QUERY OK db=18.2ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:36Z", "sim_operator", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306782, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.096] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"} [2026-06-17 11:00:27.119] [DEBUG] QUERY OK db=22.2ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "UNKNOWN", "sim_number", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306783, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.119] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"} [2026-06-17 11:00:27.141] [DEBUG] QUERY OK db=21.8ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "UNKNOWN", "sim_iccid", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306784, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.142] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"} [2026-06-17 11:00:27.165] [DEBUG] QUERY OK db=22.4ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "UNKNOWN", "sim_imsi", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306785, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.172] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"} [2026-06-17 11:00:27.209] [DEBUG] QUERY OK db=36.0ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "UNKNOWN", "sim_iccid2", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306786, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.209] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:36Z", "value" => "UNKNOWN"} [2026-06-17 11:00:27.253] [DEBUG] QUERY OK db=43.2ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "UNKNOWN", "sim_imsi2", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306787, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.253] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:36Z", "value" => "7"} [2026-06-17 11:00:27.328] [DEBUG] QUERY OK db=74.5ms idle=7.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "7", "data_usage_mb", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306788, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.328] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:36Z", "value" => "0"} [2026-06-17 11:00:27.365] [DEBUG] QUERY OK db=36.2ms idle=76.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "0", "mobile_data_mb", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306789, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:27.367] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:27.400] [DEBUG] QUERY OK db=30.8ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39297, ~N[2026-06-17 11:00:27], ~N[2026-06-17 11:00:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:27.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306790, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:36Z", message: nil, status_log_id: 39297, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:27], updated_at: ~N[2026-06-17 11:00:27]}} [2026-06-17 11:00:32.873] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:32.873] [INFO ] Incoming JSON payload: {"oid":"417ba225-0670-4079-b679-cfa143de3329","sn":"98251226730002","uploadTime":"2026-06-17T10:59:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"ram_free_mb","value":"851","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59:42Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:32.875] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "417ba225-0670-4079-b679-cfa143de3329", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:42Z", "value" => "851"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:42Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:42Z", "vendor" => "morefun"} [2026-06-17 11:00:32.876] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:32.876] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:32.876] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:32.877] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=616.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-06-17 11:00:32.878] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=584.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.`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-06-17 11:00:32.878] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:32.881] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=1.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:32.881] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:32.919] [DEBUG] QUERY OK source="tms_terminals" db=36.3ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:32], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:32.919] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:32.922] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=1.1ms idle=38.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:32.952] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms queue=1.3ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:32], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:32.993] [DEBUG] QUERY OK db=38.5ms queue=0.1ms idle=30.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "417ba225-0670-4079-b679-cfa143de3329", "2026-06-17T10:59:42Z", ~N[2026-06-17 11:00:32], ~N[2026-06-17 11:00:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:32.993] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39298, oid: "417ba225-0670-4079-b679-cfa143de3329", upload_time: "2026-06-17T10:59:42Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:32], updated_at: ~N[2026-06-17 11:00:32]} [2026-06-17 11:00:32.993] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:42Z", "value" => "morefun"} [2026-06-17 11:00:33.013] [DEBUG] QUERY OK db=19.0ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "morefun", "vendor", 39298, ~N[2026-06-17 11:00:32], ~N[2026-06-17 11:00:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306791, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:32], updated_at: ~N[2026-06-17 11:00:32]}} [2026-06-17 11:00:33.013] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:42Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:33.050] [DEBUG] QUERY OK db=35.5ms queue=0.2ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "kiosk_launcher", "model", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306792, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.051] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:42Z", "value" => "1.0"} [2026-06-17 11:00:33.095] [DEBUG] QUERY OK db=43.6ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "1.0", "app_version", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306793, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.096] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:42Z", "value" => "13"} [2026-06-17 11:00:33.130] [DEBUG] QUERY OK db=33.5ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "13", "android_version", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306794, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.130] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:42Z", "value" => "851"} [2026-06-17 11:00:33.149] [DEBUG] QUERY OK db=18.8ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "851", "ram_free_mb", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306795, itemkey: "ram_free_mb", value: "851", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.151] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:42Z", "value" => "WIFI"} [2026-06-17 11:00:33.188] [DEBUG] QUERY OK db=36.6ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "WIFI", "network_type", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306796, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.189] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:42Z", "value" => "true"} [2026-06-17 11:00:33.222] [DEBUG] QUERY OK db=32.6ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "true", "kiosk_active", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306797, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.223] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:42Z", "value" => ""} [2026-06-17 11:00:33.251] [DEBUG] QUERY OK db=27.7ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:42Z", "sim_operator", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306798, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.254] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"} [2026-06-17 11:00:33.275] [DEBUG] QUERY OK db=19.7ms queue=0.1ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "UNKNOWN", "sim_number", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306799, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.277] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"} [2026-06-17 11:00:33.311] [DEBUG] QUERY OK db=34.1ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "UNKNOWN", "sim_iccid", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306800, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.312] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"} [2026-06-17 11:00:33.336] [DEBUG] QUERY OK db=23.3ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "UNKNOWN", "sim_imsi", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306801, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.336] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"} [2026-06-17 11:00:33.371] [DEBUG] QUERY OK db=32.7ms queue=1.9ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "UNKNOWN", "sim_iccid2", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306802, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.372] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:42Z", "value" => "UNKNOWN"} [2026-06-17 11:00:33.392] [DEBUG] QUERY OK db=19.0ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "UNKNOWN", "sim_imsi2", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306803, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.393] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:42Z", "value" => "7"} [2026-06-17 11:00:33.433] [DEBUG] QUERY OK db=39.7ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "7", "data_usage_mb", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306804, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.433] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:42Z", "value" => "0"} [2026-06-17 11:00:33.458] [DEBUG] QUERY OK db=23.4ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "0", "mobile_data_mb", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306805, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:33.460] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:33.493] [DEBUG] QUERY OK db=31.6ms queue=0.1ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39298, ~N[2026-06-17 11:00:33], ~N[2026-06-17 11:00:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:33.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306806, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:42Z", message: nil, status_log_id: 39298, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:33], updated_at: ~N[2026-06-17 11:00:33]}} [2026-06-17 11:00:39.119] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:39.119] [INFO ] Incoming JSON payload: {"oid":"f04a5911-0dc5-4eb6-8b45-e61b34d4da39","sn":"98251226730002","uploadTime":"2026-06-17T10:59:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"ram_free_mb","value":"850","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59:48Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:39.121] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f04a5911-0dc5-4eb6-8b45-e61b34d4da39", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:48Z", "value" => "850"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:48Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:48Z", "vendor" => "morefun"} [2026-06-17 11:00:39.121] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:39.121] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:39.122] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:39.123] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1829.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-06-17 11:00:39.123] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=846.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-06-17 11:00:39.123] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:39.125] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:39.125] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:39.150] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:39.150] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:39.152] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:39.184] [DEBUG] QUERY OK source="tms_terminals" db=32.0ms queue=0.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:39.208] [DEBUG] QUERY OK db=23.6ms idle=32.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f04a5911-0dc5-4eb6-8b45-e61b34d4da39", "2026-06-17T10:59:48Z", ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:39.208] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39299, oid: "f04a5911-0dc5-4eb6-8b45-e61b34d4da39", upload_time: "2026-06-17T10:59:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]} [2026-06-17 11:00:39.209] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:48Z", "value" => "morefun"} [2026-06-17 11:00:39.233] [DEBUG] QUERY OK db=23.7ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "morefun", "vendor", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306807, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.233] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:48Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:39.271] [DEBUG] QUERY OK db=37.1ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "kiosk_launcher", "model", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306808, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.272] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:48Z", "value" => "1.0"} [2026-06-17 11:00:39.299] [DEBUG] QUERY OK db=25.8ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "1.0", "app_version", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306809, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.299] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:48Z", "value" => "13"} [2026-06-17 11:00:39.322] [DEBUG] QUERY OK db=22.2ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "13", "android_version", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306810, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.322] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:48Z", "value" => "850"} [2026-06-17 11:00:39.341] [DEBUG] QUERY OK db=18.2ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "850", "ram_free_mb", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306811, itemkey: "ram_free_mb", value: "850", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.341] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:48Z", "value" => "WIFI"} [2026-06-17 11:00:39.358] [DEBUG] QUERY OK db=16.5ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "WIFI", "network_type", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306812, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.358] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:48Z", "value" => "true"} [2026-06-17 11:00:39.382] [DEBUG] QUERY OK db=22.5ms queue=0.2ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "true", "kiosk_active", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306813, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.382] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:48Z", "value" => ""} [2026-06-17 11:00:39.407] [DEBUG] QUERY OK db=24.5ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:48Z", "sim_operator", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306814, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.408] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"} [2026-06-17 11:00:39.438] [DEBUG] QUERY OK db=27.6ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "UNKNOWN", "sim_number", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306815, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.438] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"} [2026-06-17 11:00:39.460] [DEBUG] QUERY OK db=21.3ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "UNKNOWN", "sim_iccid", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306816, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.460] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"} [2026-06-17 11:00:39.484] [DEBUG] QUERY OK db=23.1ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "UNKNOWN", "sim_imsi", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306817, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.484] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"} [2026-06-17 11:00:39.514] [DEBUG] QUERY OK db=29.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "UNKNOWN", "sim_iccid2", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306818, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.515] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:48Z", "value" => "UNKNOWN"} [2026-06-17 11:00:39.550] [DEBUG] QUERY OK db=34.5ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "UNKNOWN", "sim_imsi2", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306819, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.551] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:48Z", "value" => "7"} [2026-06-17 11:00:39.572] [DEBUG] QUERY OK db=20.2ms queue=0.5ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "7", "data_usage_mb", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306820, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.572] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:48Z", "value" => "0"} [2026-06-17 11:00:39.590] [DEBUG] QUERY OK db=17.0ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "0", "mobile_data_mb", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306821, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:39.590] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:39.631] [DEBUG] QUERY OK db=39.2ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39299, ~N[2026-06-17 11:00:39], ~N[2026-06-17 11:00:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:39.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306822, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:48Z", message: nil, status_log_id: 39299, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:39], updated_at: ~N[2026-06-17 11:00:39]}} [2026-06-17 11:00:45.216] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:45.216] [INFO ] Incoming JSON payload: {"oid":"eacf333f-41d8-442b-9b95-bfcb15c06484","sn":"98251226730002","uploadTime":"2026-06-17T10:59:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"ram_free_mb","value":"850","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T10:59:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T10:59:55Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:45.217] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "eacf333f-41d8-442b-9b95-bfcb15c06484", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:55Z", "value" => "850"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:55Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T10:59:55Z", "vendor" => "morefun"} [2026-06-17 11:00:45.217] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:45.217] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:45.217] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:45.219] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=919.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-06-17 11:00:45.221] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms queue=0.1ms idle=877.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.`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-06-17 11:00:45.221] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:45.222] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:45.223] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:45.256] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:45.257] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:45.258] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=34.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:45.281] [DEBUG] QUERY OK source="tms_terminals" db=23.0ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:45.311] [DEBUG] QUERY OK db=29.5ms idle=23.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "eacf333f-41d8-442b-9b95-bfcb15c06484", "2026-06-17T10:59:55Z", ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:45.312] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39300, oid: "eacf333f-41d8-442b-9b95-bfcb15c06484", upload_time: "2026-06-17T10:59:55Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]} [2026-06-17 11:00:45.312] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T10:59:55Z", "value" => "morefun"} [2026-06-17 11:00:45.344] [DEBUG] QUERY OK db=32.1ms queue=0.3ms idle=11.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "morefun", "vendor", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306823, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.345] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T10:59:55Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:45.369] [DEBUG] QUERY OK db=23.3ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "kiosk_launcher", "model", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306824, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.369] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T10:59:55Z", "value" => "1.0"} [2026-06-17 11:00:45.393] [DEBUG] QUERY OK db=23.8ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "1.0", "app_version", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306825, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.395] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T10:59:55Z", "value" => "13"} [2026-06-17 11:00:45.441] [DEBUG] QUERY OK db=44.0ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "13", "android_version", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306826, itemkey: "android_version", value: "13", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.441] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T10:59:55Z", "value" => "850"} [2026-06-17 11:00:45.474] [DEBUG] QUERY OK db=32.3ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "850", "ram_free_mb", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306827, itemkey: "ram_free_mb", value: "850", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.475] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T10:59:55Z", "value" => "WIFI"} [2026-06-17 11:00:45.501] [DEBUG] QUERY OK db=23.8ms queue=0.2ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "WIFI", "network_type", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306828, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.502] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T10:59:55Z", "value" => "true"} [2026-06-17 11:00:45.535] [DEBUG] QUERY OK db=31.7ms queue=0.1ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "true", "kiosk_active", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306829, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.535] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T10:59:55Z", "value" => ""} [2026-06-17 11:00:45.569] [DEBUG] QUERY OK db=33.5ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T10:59:55Z", "sim_operator", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306830, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.570] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"} [2026-06-17 11:00:45.594] [DEBUG] QUERY OK db=23.9ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "UNKNOWN", "sim_number", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306831, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.595] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"} [2026-06-17 11:00:45.620] [DEBUG] QUERY OK db=25.0ms queue=0.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "UNKNOWN", "sim_iccid", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306832, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.621] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"} [2026-06-17 11:00:45.649] [DEBUG] QUERY OK db=28.2ms queue=0.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "UNKNOWN", "sim_imsi", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306833, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.650] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"} [2026-06-17 11:00:45.683] [DEBUG] QUERY OK db=32.7ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "UNKNOWN", "sim_iccid2", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306834, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.684] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T10:59:55Z", "value" => "UNKNOWN"} [2026-06-17 11:00:45.708] [DEBUG] QUERY OK db=23.7ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "UNKNOWN", "sim_imsi2", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306835, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.708] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T10:59:55Z", "value" => "7"} [2026-06-17 11:00:45.744] [DEBUG] QUERY OK db=35.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "7", "data_usage_mb", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306836, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.744] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T10:59:55Z", "value" => "0"} [2026-06-17 11:00:45.768] [DEBUG] QUERY OK db=22.6ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "0", "mobile_data_mb", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306837, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:45.768] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T10:59:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:45.798] [DEBUG] QUERY OK db=28.6ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T10:59:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39300, ~N[2026-06-17 11:00:45], ~N[2026-06-17 11:00:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:45.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306838, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T10:59:55Z", message: nil, status_log_id: 39300, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:45], updated_at: ~N[2026-06-17 11:00:45]}} [2026-06-17 11:00:51.361] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:51.361] [INFO ] Incoming JSON payload: {"oid":"3f3d07cb-5674-4431-ad44-68529bbc3a25","sn":"98251226730002","uploadTime":"2026-06-17T11:00:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"ram_free_mb","value":"851","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00:01Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:51.363] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3f3d07cb-5674-4431-ad44-68529bbc3a25", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:01Z", "value" => "851"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:01Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:01Z", "vendor" => "morefun"} [2026-06-17 11:00:51.363] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:51.364] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:51.364] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:51.366] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=68.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-06-17 11:00:51.368] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms queue=0.1ms idle=48.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.`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-06-17 11:00:51.368] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:51.370] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:51.371] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:51.403] [DEBUG] QUERY OK source="tms_terminals" db=32.0ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:51.403] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:51.405] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=33.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:51.453] [DEBUG] QUERY OK source="tms_terminals" db=48.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:51.505] [DEBUG] QUERY OK db=48.2ms queue=0.1ms idle=52.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3f3d07cb-5674-4431-ad44-68529bbc3a25", "2026-06-17T11:00:01Z", ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:51.505] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39301, oid: "3f3d07cb-5674-4431-ad44-68529bbc3a25", upload_time: "2026-06-17T11:00:01Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]} [2026-06-17 11:00:51.505] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:01Z", "value" => "morefun"} [2026-06-17 11:00:51.553] [DEBUG] QUERY OK db=47.2ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "morefun", "vendor", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306839, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.554] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:01Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:51.593] [DEBUG] QUERY OK db=38.4ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "kiosk_launcher", "model", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306840, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.593] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:01Z", "value" => "1.0"} [2026-06-17 11:00:51.635] [DEBUG] QUERY OK db=40.3ms queue=0.7ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "1.0", "app_version", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306841, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.635] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:01Z", "value" => "13"} [2026-06-17 11:00:51.680] [DEBUG] QUERY OK db=44.2ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "13", "android_version", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306842, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.680] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:01Z", "value" => "851"} [2026-06-17 11:00:51.715] [DEBUG] QUERY OK db=34.4ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "851", "ram_free_mb", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306843, itemkey: "ram_free_mb", value: "851", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.717] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:01Z", "value" => "WIFI"} [2026-06-17 11:00:51.740] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "WIFI", "network_type", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306844, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.740] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:01Z", "value" => "true"} [2026-06-17 11:00:51.767] [DEBUG] QUERY OK db=25.8ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "true", "kiosk_active", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306845, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.767] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:01Z", "value" => ""} [2026-06-17 11:00:51.792] [DEBUG] QUERY OK db=24.4ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:01Z", "sim_operator", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306846, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.793] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"} [2026-06-17 11:00:51.825] [DEBUG] QUERY OK db=31.6ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "UNKNOWN", "sim_number", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306847, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.826] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"} [2026-06-17 11:00:51.856] [DEBUG] QUERY OK db=29.6ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "UNKNOWN", "sim_iccid", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306848, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.856] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"} [2026-06-17 11:00:51.881] [DEBUG] QUERY OK db=24.3ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "UNKNOWN", "sim_imsi", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306849, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.882] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"} [2026-06-17 11:00:51.920] [DEBUG] QUERY OK db=38.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "UNKNOWN", "sim_iccid2", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306850, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.921] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:01Z", "value" => "UNKNOWN"} [2026-06-17 11:00:51.942] [DEBUG] QUERY OK db=20.6ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "UNKNOWN", "sim_imsi2", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306851, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.942] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:01Z", "value" => "7"} [2026-06-17 11:00:51.978] [DEBUG] QUERY OK db=35.6ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "7", "data_usage_mb", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:51.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306852, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:51.978] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:01Z", "value" => "0"} [2026-06-17 11:00:52.008] [DEBUG] QUERY OK db=29.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "0", "mobile_data_mb", 39301, ~N[2026-06-17 11:00:51], ~N[2026-06-17 11:00:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:52.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306853, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:51], updated_at: ~N[2026-06-17 11:00:51]}} [2026-06-17 11:00:52.009] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:52.051] [DEBUG] QUERY OK db=40.7ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39301, ~N[2026-06-17 11:00:52], ~N[2026-06-17 11:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:52.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306854, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:01Z", message: nil, status_log_id: 39301, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:52], updated_at: ~N[2026-06-17 11:00:52]}} [2026-06-17 11:00:57.365] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:00:57.366] [INFO ] Incoming JSON payload: {"oid":"282c3b75-70dd-4cb3-9625-d426cddf6b5c","sn":"98251226730002","uploadTime":"2026-06-17T11:00:07Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"ram_free_mb","value":"851","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:07Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:00:57.366] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "282c3b75-70dd-4cb3-9625-d426cddf6b5c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:07Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:07Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:07Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:07Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:07Z", "value" => "851"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:07Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:07Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:07Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:07Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:07Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:07Z", "vendor" => "morefun"} [2026-06-17 11:00:57.367] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:00:57.367] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:00:57.367] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:00:57.372] [DEBUG] QUERY OK source="parameter_templates" db=4.6ms idle=556.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:00:57.373] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=21.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-06-17 11:00:57.373] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:00:57.379] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=4.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:00:57.380] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:00:57.412] [DEBUG] QUERY OK source="tms_terminals" db=31.5ms idle=7.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:00:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:00:57.412] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:00:57.413] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=33.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:00:57.456] [DEBUG] QUERY OK source="tms_terminals" db=41.4ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:00:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:00:57.498] [DEBUG] QUERY OK db=41.7ms idle=42.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "282c3b75-70dd-4cb3-9625-d426cddf6b5c", "2026-06-17T11:00:07Z", ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:00:57.498] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39302, oid: "282c3b75-70dd-4cb3-9625-d426cddf6b5c", upload_time: "2026-06-17T11:00:07Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]} [2026-06-17 11:00:57.498] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:07Z", "value" => "morefun"} [2026-06-17 11:00:57.525] [DEBUG] QUERY OK db=26.3ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "morefun", "vendor", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306855, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.526] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:07Z", "value" => "kiosk_launcher"} [2026-06-17 11:00:57.570] [DEBUG] QUERY OK db=42.5ms queue=0.1ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "kiosk_launcher", "model", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306856, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.570] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:07Z", "value" => "1.0"} [2026-06-17 11:00:57.608] [DEBUG] QUERY OK db=37.1ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "1.0", "app_version", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306857, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.608] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:07Z", "value" => "13"} [2026-06-17 11:00:57.640] [DEBUG] QUERY OK db=31.9ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "13", "android_version", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306858, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.642] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:07Z", "value" => "851"} [2026-06-17 11:00:57.661] [DEBUG] QUERY OK db=18.4ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "851", "ram_free_mb", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306859, itemkey: "ram_free_mb", value: "851", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.661] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:07Z", "value" => "WIFI"} [2026-06-17 11:00:57.679] [DEBUG] QUERY OK db=17.6ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "WIFI", "network_type", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306860, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.679] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:07Z", "value" => "true"} [2026-06-17 11:00:57.705] [DEBUG] QUERY OK db=24.6ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "true", "kiosk_active", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306861, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.705] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:07Z", "value" => ""} [2026-06-17 11:00:57.740] [DEBUG] QUERY OK db=34.2ms queue=0.3ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:07Z", "sim_operator", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306862, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.741] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"} [2026-06-17 11:00:57.764] [DEBUG] QUERY OK db=23.0ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "UNKNOWN", "sim_number", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306863, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.764] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"} [2026-06-17 11:00:57.786] [DEBUG] QUERY OK db=21.2ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "UNKNOWN", "sim_iccid", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306864, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.786] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"} [2026-06-17 11:00:57.805] [DEBUG] QUERY OK db=18.5ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "UNKNOWN", "sim_imsi", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306865, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.806] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"} [2026-06-17 11:00:57.829] [DEBUG] QUERY OK db=23.4ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "UNKNOWN", "sim_iccid2", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306866, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.830] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:07Z", "value" => "UNKNOWN"} [2026-06-17 11:00:57.853] [DEBUG] QUERY OK db=22.7ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "UNKNOWN", "sim_imsi2", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306867, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.853] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:07Z", "value" => "7"} [2026-06-17 11:00:57.882] [DEBUG] QUERY OK db=28.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "7", "data_usage_mb", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306868, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.882] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:07Z", "value" => "0"} [2026-06-17 11:00:57.906] [DEBUG] QUERY OK db=23.8ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:07Z", "0", "mobile_data_mb", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306869, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:00:57.914] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:00:57.934] [DEBUG] QUERY OK db=19.1ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39302, ~N[2026-06-17 11:00:57], ~N[2026-06-17 11:00:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:00:57.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306870, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:07Z", message: nil, status_log_id: 39302, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:00:57], updated_at: ~N[2026-06-17 11:00:57]}} [2026-06-17 11:01:03.551] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:03.551] [INFO ] Incoming JSON payload: {"oid":"27308625-dba3-41f9-a717-bf4c4610da59","sn":"98251226730002","uploadTime":"2026-06-17T11:00:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"ram_free_mb","value":"852","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:03.552] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "27308625-dba3-41f9-a717-bf4c4610da59", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:13Z", "value" => "852"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:13Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:13Z", "vendor" => "morefun"} [2026-06-17 11:01:03.552] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:03.552] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:03.552] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:03.562] [DEBUG] QUERY OK source="parameter_templates" db=5.1ms queue=3.8ms idle=1181.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-06-17 11:01:03.566] [DEBUG] QUERY OK source="parameter_templates" db=4.0ms idle=187.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-06-17 11:01:03.566] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:03.582] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=4.1ms idle=14.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:03.582] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:03.603] [DEBUG] QUERY OK source="tms_terminals" db=20.4ms idle=16.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:03.603] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:03.611] [DEBUG] QUERY OK source="tms_terminals" db=7.4ms idle=21.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:03.633] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:03.676] [DEBUG] QUERY OK db=41.3ms idle=23.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "27308625-dba3-41f9-a717-bf4c4610da59", "2026-06-17T11:00:13Z", ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:03.678] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39303, oid: "27308625-dba3-41f9-a717-bf4c4610da59", upload_time: "2026-06-17T11:00:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]} [2026-06-17 11:01:03.679] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:13Z", "value" => "morefun"} [2026-06-17 11:01:03.705] [DEBUG] QUERY OK db=25.6ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "morefun", "vendor", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306871, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.705] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:13Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:03.725] [DEBUG] QUERY OK db=19.7ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "kiosk_launcher", "model", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306872, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.727] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:13Z", "value" => "1.0"} [2026-06-17 11:01:03.743] [DEBUG] QUERY OK db=15.5ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "1.0", "app_version", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306873, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.743] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:13Z", "value" => "13"} [2026-06-17 11:01:03.774] [DEBUG] QUERY OK db=30.3ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "13", "android_version", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306874, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.775] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:13Z", "value" => "852"} [2026-06-17 11:01:03.808] [DEBUG] QUERY OK db=33.2ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "852", "ram_free_mb", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306875, itemkey: "ram_free_mb", value: "852", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.811] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:13Z", "value" => "WIFI"} [2026-06-17 11:01:03.830] [DEBUG] QUERY OK db=18.6ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "WIFI", "network_type", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306876, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.830] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:13Z", "value" => "true"} [2026-06-17 11:01:03.846] [DEBUG] QUERY OK db=15.4ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "true", "kiosk_active", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306877, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.851] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:13Z", "value" => ""} [2026-06-17 11:01:03.877] [DEBUG] QUERY OK db=25.4ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:13Z", "sim_operator", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306878, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.877] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"} [2026-06-17 11:01:03.908] [DEBUG] QUERY OK db=30.2ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "UNKNOWN", "sim_number", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306879, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.909] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"} [2026-06-17 11:01:03.932] [DEBUG] QUERY OK db=22.5ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "UNKNOWN", "sim_iccid", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306880, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.933] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"} [2026-06-17 11:01:03.951] [DEBUG] QUERY OK db=17.2ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "UNKNOWN", "sim_imsi", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306881, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.951] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"} [2026-06-17 11:01:03.980] [DEBUG] QUERY OK db=28.4ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "UNKNOWN", "sim_iccid2", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:03.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306882, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:03.980] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:13Z", "value" => "UNKNOWN"} [2026-06-17 11:01:04.021] [DEBUG] QUERY OK db=40.4ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "UNKNOWN", "sim_imsi2", 39303, ~N[2026-06-17 11:01:03], ~N[2026-06-17 11:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:04.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306883, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:03], updated_at: ~N[2026-06-17 11:01:03]}} [2026-06-17 11:01:04.022] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:13Z", "value" => "7"} [2026-06-17 11:01:04.039] [DEBUG] QUERY OK db=16.2ms queue=1.2ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "7", "data_usage_mb", 39303, ~N[2026-06-17 11:01:04], ~N[2026-06-17 11:01:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:04.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306884, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:04], updated_at: ~N[2026-06-17 11:01:04]}} [2026-06-17 11:01:04.040] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:13Z", "value" => "0"} [2026-06-17 11:01:04.062] [DEBUG] QUERY OK db=19.6ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "0", "mobile_data_mb", 39303, ~N[2026-06-17 11:01:04], ~N[2026-06-17 11:01:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:04.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306885, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:04], updated_at: ~N[2026-06-17 11:01:04]}} [2026-06-17 11:01:04.063] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:04.105] [DEBUG] QUERY OK db=41.5ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39303, ~N[2026-06-17 11:01:04], ~N[2026-06-17 11:01:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:04.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306886, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:13Z", message: nil, status_log_id: 39303, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:04], updated_at: ~N[2026-06-17 11:01:04]}} [2026-06-17 11:01:05.301] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 33µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZmQmpUdVk0ZjBBdkZDV1pIWTkxc0VRWHcNbm9ub2RlQG5vaG9zdAAAFd8AAAAAAAAAAG0AAAAscGh4OmxwOnUwdFpjNnNxZTNFdnpxbEcxTSt0MHc9PTE3ODE2OTQwMDA4NTVuBgDX7jzVngFiABJ1AA.0gndPRCxkqyD5gnqdx1IOoSl6oybMPo0d8Xgfn-r_LU", "vsn" => "2.0.0"} [2026-06-17 11:01:10.029] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:10.029] [INFO ] Incoming JSON payload: {"oid":"5499b17d-c54a-4cef-8cac-08a42e9b764c","sn":"98251226730002","uploadTime":"2026-06-17T11:00:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"ram_free_mb","value":"848","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00:19Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:10.030] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5499b17d-c54a-4cef-8cac-08a42e9b764c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:19Z", "value" => "848"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:19Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:19Z", "vendor" => "morefun"} [2026-06-17 11:01:10.030] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:10.030] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:10.030] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:10.033] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=731.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-06-17 11:01:10.033] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=627.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-06-17 11:01:10.033] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:10.035] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:10.035] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:10.070] [DEBUG] QUERY OK source="tms_terminals" db=35.0ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:10.070] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:10.071] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=35.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:10.101] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms queue=0.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:10.127] [DEBUG] QUERY OK db=25.5ms idle=30.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5499b17d-c54a-4cef-8cac-08a42e9b764c", "2026-06-17T11:00:19Z", ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:10.127] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39304, oid: "5499b17d-c54a-4cef-8cac-08a42e9b764c", upload_time: "2026-06-17T11:00:19Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]} [2026-06-17 11:01:10.128] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:19Z", "value" => "morefun"} [2026-06-17 11:01:10.156] [DEBUG] QUERY OK db=27.9ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "morefun", "vendor", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306887, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.156] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:19Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:10.185] [DEBUG] QUERY OK db=28.3ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "kiosk_launcher", "model", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306888, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.185] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:19Z", "value" => "1.0"} [2026-06-17 11:01:10.219] [DEBUG] QUERY OK db=32.2ms queue=0.7ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "1.0", "app_version", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306889, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.219] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:19Z", "value" => "13"} [2026-06-17 11:01:10.261] [DEBUG] QUERY OK db=39.8ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "13", "android_version", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306890, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.261] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:19Z", "value" => "848"} [2026-06-17 11:01:10.360] [DEBUG] QUERY OK db=97.8ms queue=0.7ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "848", "ram_free_mb", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306891, itemkey: "ram_free_mb", value: "848", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.360] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:19Z", "value" => "WIFI"} [2026-06-17 11:01:10.382] [DEBUG] QUERY OK db=21.2ms idle=100.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "WIFI", "network_type", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306892, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.383] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:19Z", "value" => "true"} [2026-06-17 11:01:10.418] [DEBUG] QUERY OK db=35.3ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "true", "kiosk_active", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306893, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.420] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:19Z", "value" => ""} [2026-06-17 11:01:10.454] [DEBUG] QUERY OK db=33.4ms queue=0.1ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:19Z", "sim_operator", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306894, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.455] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"} [2026-06-17 11:01:10.483] [DEBUG] QUERY OK db=28.5ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "UNKNOWN", "sim_number", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306895, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.484] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"} [2026-06-17 11:01:10.508] [DEBUG] QUERY OK db=23.5ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "UNKNOWN", "sim_iccid", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306896, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.508] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"} [2026-06-17 11:01:10.540] [DEBUG] QUERY OK db=31.7ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "UNKNOWN", "sim_imsi", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306897, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.541] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"} [2026-06-17 11:01:10.568] [DEBUG] QUERY OK db=27.4ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "UNKNOWN", "sim_iccid2", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306898, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.576] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:19Z", "value" => "UNKNOWN"} [2026-06-17 11:01:10.606] [DEBUG] QUERY OK db=28.7ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "UNKNOWN", "sim_imsi2", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306899, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.606] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:19Z", "value" => "7"} [2026-06-17 11:01:10.635] [DEBUG] QUERY OK db=28.6ms queue=0.1ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "7", "data_usage_mb", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306900, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.636] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:19Z", "value" => "0"} [2026-06-17 11:01:10.660] [DEBUG] QUERY OK db=23.7ms queue=0.1ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "0", "mobile_data_mb", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306901, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:10.661] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:10.694] [DEBUG] QUERY OK db=32.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:19Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39304, ~N[2026-06-17 11:01:10], ~N[2026-06-17 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:10.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306902, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:19Z", message: nil, status_log_id: 39304, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:10], updated_at: ~N[2026-06-17 11:01:10]}} [2026-06-17 11:01:15.879] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:15.881] [INFO ] Incoming JSON payload: {"oid":"81e6068a-d076-4721-b0d2-332dc5451501","sn":"98251226730002","uploadTime":"2026-06-17T11:00:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"ram_free_mb","value":"848","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:15.882] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "81e6068a-d076-4721-b0d2-332dc5451501", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:25Z", "value" => "848"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:25Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:25Z", "vendor" => "morefun"} [2026-06-17 11:01:15.882] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:15.883] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:15.883] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:15.885] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=1439.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-06-17 11:01:15.886] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.6ms idle=438.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-06-17 11:01:15.887] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:15.889] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:15.889] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:15.913] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:15], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:15.913] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:15.915] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:15.948] [DEBUG] QUERY OK source="tms_terminals" db=32.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:15], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:15.981] [DEBUG] QUERY OK db=32.7ms idle=33.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "81e6068a-d076-4721-b0d2-332dc5451501", "2026-06-17T11:00:25Z", ~N[2026-06-17 11:01:15], ~N[2026-06-17 11:01:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:15.982] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39305, oid: "81e6068a-d076-4721-b0d2-332dc5451501", upload_time: "2026-06-17T11:00:25Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:15], updated_at: ~N[2026-06-17 11:01:15]} [2026-06-17 11:01:15.982] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:25Z", "value" => "morefun"} [2026-06-17 11:01:16.002] [DEBUG] QUERY OK db=19.9ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "morefun", "vendor", 39305, ~N[2026-06-17 11:01:15], ~N[2026-06-17 11:01:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306903, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:15], updated_at: ~N[2026-06-17 11:01:15]}} [2026-06-17 11:01:16.002] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:25Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:16.036] [DEBUG] QUERY OK db=33.0ms queue=0.3ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "kiosk_launcher", "model", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306904, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.037] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:25Z", "value" => "1.0"} [2026-06-17 11:01:16.073] [DEBUG] QUERY OK db=34.9ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "1.0", "app_version", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306905, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.074] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:25Z", "value" => "13"} [2026-06-17 11:01:16.100] [DEBUG] QUERY OK db=25.3ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "13", "android_version", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306906, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.101] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:25Z", "value" => "848"} [2026-06-17 11:01:16.134] [DEBUG] QUERY OK db=32.8ms queue=0.1ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "848", "ram_free_mb", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306907, itemkey: "ram_free_mb", value: "848", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.134] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:25Z", "value" => "WIFI"} [2026-06-17 11:01:16.167] [DEBUG] QUERY OK db=32.5ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "WIFI", "network_type", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306908, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.168] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:25Z", "value" => "true"} [2026-06-17 11:01:16.191] [DEBUG] QUERY OK db=23.1ms queue=0.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "true", "kiosk_active", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306909, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.192] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:25Z", "value" => ""} [2026-06-17 11:01:16.215] [DEBUG] QUERY OK db=22.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:25Z", "sim_operator", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306910, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.216] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"} [2026-06-17 11:01:16.256] [DEBUG] QUERY OK db=39.8ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "UNKNOWN", "sim_number", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306911, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.256] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"} [2026-06-17 11:01:16.370] [DEBUG] QUERY OK db=113.7ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "UNKNOWN", "sim_iccid", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306912, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.371] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"} [2026-06-17 11:01:16.414] [DEBUG] QUERY OK db=36.8ms queue=0.1ms idle=121.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "UNKNOWN", "sim_imsi", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306913, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.414] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"} [2026-06-17 11:01:16.447] [DEBUG] QUERY OK db=32.5ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "UNKNOWN", "sim_iccid2", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306914, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.447] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:25Z", "value" => "UNKNOWN"} [2026-06-17 11:01:16.468] [DEBUG] QUERY OK db=20.7ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "UNKNOWN", "sim_imsi2", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306915, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.469] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:25Z", "value" => "7"} [2026-06-17 11:01:16.489] [DEBUG] QUERY OK db=20.0ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "7", "data_usage_mb", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306916, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.490] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:25Z", "value" => "0"} [2026-06-17 11:01:16.515] [DEBUG] QUERY OK db=25.1ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:25Z", "0", "mobile_data_mb", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306917, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:16.519] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:16.561] [DEBUG] QUERY OK db=38.7ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39305, ~N[2026-06-17 11:01:16], ~N[2026-06-17 11:01:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:16.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306918, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:25Z", message: nil, status_log_id: 39305, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:16], updated_at: ~N[2026-06-17 11:01:16]}} [2026-06-17 11:01:22.018] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:22.018] [INFO ] Incoming JSON payload: {"oid":"06e9188d-7f4f-4b0f-b019-123b20388676","sn":"98251226730002","uploadTime":"2026-06-17T11:00:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"ram_free_mb","value":"847","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00:31Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:22.019] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "06e9188d-7f4f-4b0f-b019-123b20388676", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:31Z", "value" => "847"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:31Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:31Z", "vendor" => "morefun"} [2026-06-17 11:01:22.019] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:22.019] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:22.019] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:22.020] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1551.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-06-17 11:01:22.022] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=548.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-06-17 11:01:22.022] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:22.023] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:22.023] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:22.050] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms queue=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:22.051] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:22.052] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:22.081] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:22.106] [DEBUG] QUERY OK db=24.0ms idle=29.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "06e9188d-7f4f-4b0f-b019-123b20388676", "2026-06-17T11:00:31Z", ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:22.106] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39306, oid: "06e9188d-7f4f-4b0f-b019-123b20388676", upload_time: "2026-06-17T11:00:31Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]} [2026-06-17 11:01:22.106] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:31Z", "value" => "morefun"} [2026-06-17 11:01:22.139] [DEBUG] QUERY OK db=32.1ms queue=0.8ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "morefun", "vendor", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306919, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.140] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:31Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:22.166] [DEBUG] QUERY OK db=24.9ms queue=0.2ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "kiosk_launcher", "model", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306920, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.166] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:31Z", "value" => "1.0"} [2026-06-17 11:01:22.186] [DEBUG] QUERY OK db=18.9ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "1.0", "app_version", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306921, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.186] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:31Z", "value" => "13"} [2026-06-17 11:01:22.210] [DEBUG] QUERY OK db=23.8ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "13", "android_version", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306922, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.211] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:31Z", "value" => "847"} [2026-06-17 11:01:22.260] [DEBUG] QUERY OK db=48.4ms queue=0.1ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "847", "ram_free_mb", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306923, itemkey: "ram_free_mb", value: "847", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.260] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:31Z", "value" => "WIFI"} [2026-06-17 11:01:22.279] [DEBUG] QUERY OK db=19.0ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "WIFI", "network_type", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306924, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.280] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:31Z", "value" => "true"} [2026-06-17 11:01:22.297] [DEBUG] QUERY OK db=16.9ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "true", "kiosk_active", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306925, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.298] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:31Z", "value" => ""} [2026-06-17 11:01:22.321] [DEBUG] QUERY OK db=22.7ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:31Z", "sim_operator", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306926, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.321] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"} [2026-06-17 11:01:22.345] [DEBUG] QUERY OK db=22.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "UNKNOWN", "sim_number", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306927, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.345] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"} [2026-06-17 11:01:22.368] [DEBUG] QUERY OK db=22.2ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "UNKNOWN", "sim_iccid", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306928, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.368] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"} [2026-06-17 11:01:22.389] [DEBUG] QUERY OK db=20.3ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "UNKNOWN", "sim_imsi", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306929, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.389] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"} [2026-06-17 11:01:22.410] [DEBUG] QUERY OK db=20.5ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "UNKNOWN", "sim_iccid2", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306930, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.412] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:31Z", "value" => "UNKNOWN"} [2026-06-17 11:01:22.444] [DEBUG] QUERY OK db=31.3ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "UNKNOWN", "sim_imsi2", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306931, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.445] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:31Z", "value" => "7"} [2026-06-17 11:01:22.474] [DEBUG] QUERY OK db=24.4ms queue=3.7ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "7", "data_usage_mb", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306932, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.475] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:31Z", "value" => "0"} [2026-06-17 11:01:22.504] [DEBUG] QUERY OK db=28.0ms idle=3.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "0", "mobile_data_mb", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306933, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:22.505] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:22.535] [DEBUG] QUERY OK db=29.8ms queue=0.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39306, ~N[2026-06-17 11:01:22], ~N[2026-06-17 11:01:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:22.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306934, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:31Z", message: nil, status_log_id: 39306, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:22], updated_at: ~N[2026-06-17 11:01:22]}} [2026-06-17 11:01:28.287] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:28.287] [INFO ] Incoming JSON payload: {"oid":"3e15fd58-280a-402e-81e9-869fb61ec6ea","sn":"98251226730002","uploadTime":"2026-06-17T11:00:37Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"ram_free_mb","value":"848","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:37Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:28.288] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3e15fd58-280a-402e-81e9-869fb61ec6ea", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:37Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:37Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:37Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:37Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:37Z", "value" => "848"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:37Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:37Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:37Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:37Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:37Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:37Z", "vendor" => "morefun"} [2026-06-17 11:01:28.288] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:28.288] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:28.288] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:28.289] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=988.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-06-17 11:01:28.290] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms idle=788.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.`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-06-17 11:01:28.290] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:28.294] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms idle=0.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:28.294] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:28.314] [DEBUG] QUERY OK source="tms_terminals" db=19.7ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:28.315] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:28.316] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:28.348] [DEBUG] QUERY OK source="tms_terminals" db=31.1ms queue=0.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:28.371] [DEBUG] QUERY OK db=22.9ms idle=31.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3e15fd58-280a-402e-81e9-869fb61ec6ea", "2026-06-17T11:00:37Z", ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:28.371] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39307, oid: "3e15fd58-280a-402e-81e9-869fb61ec6ea", upload_time: "2026-06-17T11:00:37Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]} [2026-06-17 11:01:28.372] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:37Z", "value" => "morefun"} [2026-06-17 11:01:28.390] [DEBUG] QUERY OK db=17.7ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "morefun", "vendor", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306935, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.390] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:37Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:28.431] [DEBUG] QUERY OK db=40.9ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "kiosk_launcher", "model", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306936, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.432] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:37Z", "value" => "1.0"} [2026-06-17 11:01:28.450] [DEBUG] QUERY OK db=17.6ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "1.0", "app_version", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306937, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.450] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:37Z", "value" => "13"} [2026-06-17 11:01:28.486] [DEBUG] QUERY OK db=34.9ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "13", "android_version", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306938, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.488] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:37Z", "value" => "848"} [2026-06-17 11:01:28.511] [DEBUG] QUERY OK db=22.6ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "848", "ram_free_mb", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306939, itemkey: "ram_free_mb", value: "848", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.511] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:37Z", "value" => "WIFI"} [2026-06-17 11:01:28.526] [DEBUG] QUERY OK db=14.0ms idle=4.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "WIFI", "network_type", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306940, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.526] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:37Z", "value" => "true"} [2026-06-17 11:01:28.539] [DEBUG] QUERY OK db=12.7ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "true", "kiosk_active", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306941, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.540] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:37Z", "value" => ""} [2026-06-17 11:01:28.581] [DEBUG] QUERY OK db=39.5ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:37Z", "sim_operator", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306942, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.581] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"} [2026-06-17 11:01:28.609] [DEBUG] QUERY OK db=27.2ms queue=0.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "UNKNOWN", "sim_number", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306943, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.610] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"} [2026-06-17 11:01:28.631] [DEBUG] QUERY OK db=20.6ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "UNKNOWN", "sim_iccid", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306944, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.631] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"} [2026-06-17 11:01:28.650] [DEBUG] QUERY OK db=17.9ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "UNKNOWN", "sim_imsi", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306945, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.652] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"} [2026-06-17 11:01:28.688] [DEBUG] QUERY OK db=35.8ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "UNKNOWN", "sim_iccid2", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306946, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.688] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:37Z", "value" => "UNKNOWN"} [2026-06-17 11:01:28.718] [DEBUG] QUERY OK db=28.9ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "UNKNOWN", "sim_imsi2", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306947, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.718] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:37Z", "value" => "7"} [2026-06-17 11:01:28.731] [DEBUG] QUERY OK db=13.0ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "7", "data_usage_mb", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306948, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.732] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:37Z", "value" => "0"} [2026-06-17 11:01:28.746] [DEBUG] QUERY OK db=13.9ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:37Z", "0", "mobile_data_mb", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306949, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:28.747] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:28.764] [DEBUG] QUERY OK db=15.9ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39307, ~N[2026-06-17 11:01:28], ~N[2026-06-17 11:01:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:28.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306950, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:37Z", message: nil, status_log_id: 39307, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:28], updated_at: ~N[2026-06-17 11:01:28]}} [2026-06-17 11:01:34.453] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:39.454] [INFO ] Incoming JSON payload: {"oid":"f843993a-b3f6-4445-b0d6-74b69f7c1294","sn":"98251226730002","uploadTime":"2026-06-17T11:00:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"ram_free_mb","value":"848","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:43.319] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f843993a-b3f6-4445-b0d6-74b69f7c1294", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:44Z", "value" => "848"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:44Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:44Z", "vendor" => "morefun"} [2026-06-17 11:01:43.319] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:43.319] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:43.319] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:43.320] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1019.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-06-17 11:01:43.321] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=743.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-06-17 11:01:43.321] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:43.322] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:43.323] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:43.338] [DEBUG] QUERY OK source="tms_terminals" db=14.5ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:43.338] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:43.339] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=16.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:43.354] [DEBUG] QUERY OK source="tms_terminals" db=14.4ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:43.377] [DEBUG] QUERY OK db=22.9ms idle=15.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f843993a-b3f6-4445-b0d6-74b69f7c1294", "2026-06-17T11:00:44Z", ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:43.378] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39308, oid: "f843993a-b3f6-4445-b0d6-74b69f7c1294", upload_time: "2026-06-17T11:00:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]} [2026-06-17 11:01:43.378] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:44Z", "value" => "morefun"} [2026-06-17 11:01:43.401] [DEBUG] QUERY OK db=23.2ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "morefun", "vendor", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306951, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.402] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:44Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:43.425] [DEBUG] QUERY OK db=23.0ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "kiosk_launcher", "model", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306952, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.426] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:44Z", "value" => "1.0"} [2026-06-17 11:01:43.451] [DEBUG] QUERY OK db=24.5ms queue=0.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "1.0", "app_version", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306953, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.452] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:44Z", "value" => "13"} [2026-06-17 11:01:43.474] [DEBUG] QUERY OK db=20.5ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "13", "android_version", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306954, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.475] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:44Z", "value" => "848"} [2026-06-17 11:01:43.500] [DEBUG] QUERY OK db=23.9ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "848", "ram_free_mb", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306955, itemkey: "ram_free_mb", value: "848", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.501] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:44Z", "value" => "WIFI"} [2026-06-17 11:01:43.534] [DEBUG] QUERY OK db=32.7ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "WIFI", "network_type", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306956, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.535] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:44Z", "value" => "true"} [2026-06-17 11:01:43.552] [DEBUG] QUERY OK db=16.9ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "true", "kiosk_active", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306957, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.552] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:44Z", "value" => ""} [2026-06-17 11:01:43.564] [DEBUG] QUERY OK db=11.4ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:44Z", "sim_operator", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306958, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.564] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"} [2026-06-17 11:01:43.594] [DEBUG] QUERY OK db=29.4ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "UNKNOWN", "sim_number", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306959, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.595] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"} [2026-06-17 11:01:43.627] [DEBUG] QUERY OK db=30.9ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "UNKNOWN", "sim_iccid", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306960, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.628] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"} [2026-06-17 11:01:43.653] [DEBUG] QUERY OK db=24.1ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "UNKNOWN", "sim_imsi", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306961, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.653] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"} [2026-06-17 11:01:43.665] [DEBUG] QUERY OK db=11.0ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "UNKNOWN", "sim_iccid2", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306962, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.665] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:44Z", "value" => "UNKNOWN"} [2026-06-17 11:01:43.683] [DEBUG] QUERY OK db=17.1ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "UNKNOWN", "sim_imsi2", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306963, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.683] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:44Z", "value" => "7"} [2026-06-17 11:01:43.723] [DEBUG] QUERY OK db=39.0ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "7", "data_usage_mb", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306964, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.723] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:44Z", "value" => "0"} [2026-06-17 11:01:43.747] [DEBUG] QUERY OK db=23.3ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:44Z", "0", "mobile_data_mb", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306965, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.748] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:43.775] [DEBUG] QUERY OK db=26.4ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39308, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306966, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:44Z", message: nil, status_log_id: 39308, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.776] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:43.776] [INFO ] Incoming JSON payload: {"oid":"6c1c6a31-ec12-4838-98ac-7f45135833f5","sn":"98251226730002","uploadTime":"2026-06-17T11:00:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"ram_free_mb","value":"847","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00:50Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:43.778] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6c1c6a31-ec12-4838-98ac-7f45135833f5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:50Z", "value" => "847"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:50Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:50Z", "vendor" => "morefun"} [2026-06-17 11:01:43.778] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:43.778] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:43.778] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:43.779] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=31.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:01:43.779] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=4.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-06-17 11:01:43.779] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:43.780] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:43.781] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:43.795] [DEBUG] QUERY OK source="tms_terminals" db=13.4ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:43.795] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:43.796] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=14.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:43.831] [DEBUG] QUERY OK source="tms_terminals" db=34.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:43.854] [DEBUG] QUERY OK db=22.9ms idle=35.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6c1c6a31-ec12-4838-98ac-7f45135833f5", "2026-06-17T11:00:50Z", ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:43.855] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39309, oid: "6c1c6a31-ec12-4838-98ac-7f45135833f5", upload_time: "2026-06-17T11:00:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]} [2026-06-17 11:01:43.855] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:50Z", "value" => "morefun"} [2026-06-17 11:01:43.884] [DEBUG] QUERY OK db=26.9ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "morefun", "vendor", 39309, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306967, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.884] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:50Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:43.896] [DEBUG] QUERY OK db=11.1ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "kiosk_launcher", "model", 39309, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306968, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.896] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:50Z", "value" => "1.0"} [2026-06-17 11:01:43.924] [DEBUG] QUERY OK db=27.3ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "1.0", "app_version", 39309, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306969, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.924] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:50Z", "value" => "13"} [2026-06-17 11:01:43.953] [DEBUG] QUERY OK db=28.2ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "13", "android_version", 39309, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306970, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.953] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:50Z", "value" => "847"} [2026-06-17 11:01:43.977] [DEBUG] QUERY OK db=23.1ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "847", "ram_free_mb", 39309, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306971, itemkey: "ram_free_mb", value: "847", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.977] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:50Z", "value" => "WIFI"} [2026-06-17 11:01:43.994] [DEBUG] QUERY OK db=16.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "WIFI", "network_type", 39309, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:43.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306972, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:43.994] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:50Z", "value" => "true"} [2026-06-17 11:01:44.014] [DEBUG] QUERY OK db=19.6ms queue=0.1ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "true", "kiosk_active", 39309, ~N[2026-06-17 11:01:43], ~N[2026-06-17 11:01:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306973, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:43], updated_at: ~N[2026-06-17 11:01:43]}} [2026-06-17 11:01:44.015] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:50Z", "value" => ""} [2026-06-17 11:01:44.050] [DEBUG] QUERY OK db=34.7ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:50Z", "sim_operator", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306974, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:44.050] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"} [2026-06-17 11:01:44.074] [DEBUG] QUERY OK db=23.3ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "UNKNOWN", "sim_number", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306975, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:44.074] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"} [2026-06-17 11:01:44.091] [DEBUG] QUERY OK db=16.6ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "UNKNOWN", "sim_iccid", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306976, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:44.092] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"} [2026-06-17 11:01:44.110] [DEBUG] QUERY OK db=17.9ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "UNKNOWN", "sim_imsi", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306977, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:44.110] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"} [2026-06-17 11:01:44.134] [DEBUG] QUERY OK db=22.8ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "UNKNOWN", "sim_iccid2", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306978, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:44.134] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:50Z", "value" => "UNKNOWN"} [2026-06-17 11:01:44.157] [DEBUG] QUERY OK db=23.1ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "UNKNOWN", "sim_imsi2", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306979, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:44.158] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:50Z", "value" => "7"} [2026-06-17 11:01:44.181] [DEBUG] QUERY OK db=22.9ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "7", "data_usage_mb", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306980, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:44.184] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:50Z", "value" => "0"} [2026-06-17 11:01:44.204] [DEBUG] QUERY OK db=19.8ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "0", "mobile_data_mb", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306981, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:44.205] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:44.226] [DEBUG] QUERY OK db=19.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39309, ~N[2026-06-17 11:01:44], ~N[2026-06-17 11:01:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:44.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306982, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:50Z", message: nil, status_log_id: 39309, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:44], updated_at: ~N[2026-06-17 11:01:44]}} [2026-06-17 11:01:46.615] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:46.615] [INFO ] Incoming JSON payload: {"oid":"c16a6ac6-6e03-418c-a7a2-5aca8f759550","sn":"98251226730002","uploadTime":"2026-06-17T11:00:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"ram_free_mb","value":"846","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:00:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:00:56Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:46.616] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c16a6ac6-6e03-418c-a7a2-5aca8f759550", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:56Z", "value" => "846"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:56Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:00:56Z", "vendor" => "morefun"} [2026-06-17 11:01:46.616] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:46.616] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:46.616] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:46.618] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=313.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-06-17 11:01:46.619] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=18.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-06-17 11:01:46.619] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:46.623] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:46.623] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:46.660] [DEBUG] QUERY OK source="tms_terminals" db=36.6ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:46.661] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:46.661] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=37.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:46.694] [DEBUG] QUERY OK source="tms_terminals" db=31.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:46.718] [DEBUG] QUERY OK db=23.7ms idle=32.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c16a6ac6-6e03-418c-a7a2-5aca8f759550", "2026-06-17T11:00:56Z", ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:46.718] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39310, oid: "c16a6ac6-6e03-418c-a7a2-5aca8f759550", upload_time: "2026-06-17T11:00:56Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]} [2026-06-17 11:01:46.718] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:00:56Z", "value" => "morefun"} [2026-06-17 11:01:46.739] [DEBUG] QUERY OK db=20.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "morefun", "vendor", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306983, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.739] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:00:56Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:46.774] [DEBUG] QUERY OK db=33.9ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "kiosk_launcher", "model", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306984, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.774] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:00:56Z", "value" => "1.0"} [2026-06-17 11:01:46.799] [DEBUG] QUERY OK db=24.3ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "1.0", "app_version", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306985, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.799] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:00:56Z", "value" => "13"} [2026-06-17 11:01:46.838] [DEBUG] QUERY OK db=38.8ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "13", "android_version", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306986, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.839] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:00:56Z", "value" => "846"} [2026-06-17 11:01:46.862] [DEBUG] QUERY OK db=23.3ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "846", "ram_free_mb", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306987, itemkey: "ram_free_mb", value: "846", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.863] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:00:56Z", "value" => "WIFI"} [2026-06-17 11:01:46.885] [DEBUG] QUERY OK db=21.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "WIFI", "network_type", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306988, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.885] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:00:56Z", "value" => "true"} [2026-06-17 11:01:46.922] [DEBUG] QUERY OK db=34.4ms queue=1.2ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "true", "kiosk_active", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.923] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306989, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.923] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:00:56Z", "value" => ""} [2026-06-17 11:01:46.953] [DEBUG] QUERY OK db=28.9ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:00:56Z", "sim_operator", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306990, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.954] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"} [2026-06-17 11:01:46.979] [DEBUG] QUERY OK db=25.0ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "UNKNOWN", "sim_number", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:46.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306991, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:46.983] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"} [2026-06-17 11:01:47.013] [DEBUG] QUERY OK db=29.3ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "UNKNOWN", "sim_iccid", 39310, ~N[2026-06-17 11:01:46], ~N[2026-06-17 11:01:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:47.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306992, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:46], updated_at: ~N[2026-06-17 11:01:46]}} [2026-06-17 11:01:47.013] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"} [2026-06-17 11:01:47.047] [DEBUG] QUERY OK db=32.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "UNKNOWN", "sim_imsi", 39310, ~N[2026-06-17 11:01:47], ~N[2026-06-17 11:01:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:47.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306993, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:47], updated_at: ~N[2026-06-17 11:01:47]}} [2026-06-17 11:01:47.047] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"} [2026-06-17 11:01:47.071] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "UNKNOWN", "sim_iccid2", 39310, ~N[2026-06-17 11:01:47], ~N[2026-06-17 11:01:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:47.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306994, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:47], updated_at: ~N[2026-06-17 11:01:47]}} [2026-06-17 11:01:47.072] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:00:56Z", "value" => "UNKNOWN"} [2026-06-17 11:01:47.101] [DEBUG] QUERY OK db=28.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "UNKNOWN", "sim_imsi2", 39310, ~N[2026-06-17 11:01:47], ~N[2026-06-17 11:01:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:47.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306995, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:47], updated_at: ~N[2026-06-17 11:01:47]}} [2026-06-17 11:01:47.103] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:00:56Z", "value" => "7"} [2026-06-17 11:01:47.138] [DEBUG] QUERY OK db=34.7ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "7", "data_usage_mb", 39310, ~N[2026-06-17 11:01:47], ~N[2026-06-17 11:01:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:47.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306996, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:47], updated_at: ~N[2026-06-17 11:01:47]}} [2026-06-17 11:01:47.139] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:00:56Z", "value" => "0"} [2026-06-17 11:01:47.169] [DEBUG] QUERY OK db=28.9ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "0", "mobile_data_mb", 39310, ~N[2026-06-17 11:01:47], ~N[2026-06-17 11:01:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:47.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306997, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:47], updated_at: ~N[2026-06-17 11:01:47]}} [2026-06-17 11:01:47.170] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:00:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:47.200] [DEBUG] QUERY OK db=28.5ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:00:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39310, ~N[2026-06-17 11:01:47], ~N[2026-06-17 11:01:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:47.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306998, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:00:56Z", message: nil, status_log_id: 39310, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:47], updated_at: ~N[2026-06-17 11:01:47]}} [2026-06-17 11:01:53.122] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:53.122] [INFO ] Incoming JSON payload: {"oid":"d590f60e-c3cb-4951-9b15-b25ddff14193","sn":"98251226730002","uploadTime":"2026-06-17T11:01:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"ram_free_mb","value":"846","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01:02Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:01:53.125] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d590f60e-c3cb-4951-9b15-b25ddff14193", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:02Z", "value" => "846"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:02Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:02Z", "vendor" => "morefun"} [2026-06-17 11:01:53.126] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:53.126] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:53.126] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:53.127] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=825.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-06-17 11:01:53.129] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=505.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.`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-06-17 11:01:53.129] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:53.132] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:53.132] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:53.158] [DEBUG] QUERY OK source="tms_terminals" db=25.1ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:53.159] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:53.159] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:53.184] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:53.206] [DEBUG] QUERY OK db=21.9ms queue=0.1ms idle=24.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d590f60e-c3cb-4951-9b15-b25ddff14193", "2026-06-17T11:01:02Z", ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:53.207] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39311, oid: "d590f60e-c3cb-4951-9b15-b25ddff14193", upload_time: "2026-06-17T11:01:02Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]} [2026-06-17 11:01:53.207] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:02Z", "value" => "morefun"} [2026-06-17 11:01:53.231] [DEBUG] QUERY OK db=23.7ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "morefun", "vendor", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 306999, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.232] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:02Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:53.298] [DEBUG] QUERY OK db=66.0ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "kiosk_launcher", "model", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307000, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.299] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:02Z", "value" => "1.0"} [2026-06-17 11:01:53.323] [DEBUG] QUERY OK db=23.6ms idle=68.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "1.0", "app_version", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307001, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.324] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:02Z", "value" => "13"} [2026-06-17 11:01:53.354] [DEBUG] QUERY OK db=28.3ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "13", "android_version", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307002, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.354] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:02Z", "value" => "846"} [2026-06-17 11:01:53.388] [DEBUG] QUERY OK db=33.5ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "846", "ram_free_mb", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307003, itemkey: "ram_free_mb", value: "846", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.390] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:02Z", "value" => "WIFI"} [2026-06-17 11:01:53.414] [DEBUG] QUERY OK db=23.1ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "WIFI", "network_type", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307004, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.414] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:02Z", "value" => "true"} [2026-06-17 11:01:53.446] [DEBUG] QUERY OK db=30.7ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "true", "kiosk_active", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.446] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307005, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.446] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:02Z", "value" => ""} [2026-06-17 11:01:53.467] [DEBUG] QUERY OK db=21.0ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:02Z", "sim_operator", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307006, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.468] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"} [2026-06-17 11:01:53.493] [DEBUG] QUERY OK db=24.7ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "UNKNOWN", "sim_number", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307007, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.496] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"} [2026-06-17 11:01:53.541] [DEBUG] QUERY OK db=42.9ms queue=0.7ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "UNKNOWN", "sim_iccid", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307008, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.542] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"} [2026-06-17 11:01:53.569] [DEBUG] QUERY OK db=23.6ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "UNKNOWN", "sim_imsi", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307009, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.570] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"} [2026-06-17 11:01:53.599] [DEBUG] QUERY OK db=24.6ms queue=0.7ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "UNKNOWN", "sim_iccid2", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307010, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.600] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:02Z", "value" => "UNKNOWN"} [2026-06-17 11:01:53.642] [DEBUG] QUERY OK db=39.2ms idle=4.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "UNKNOWN", "sim_imsi2", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307011, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.643] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:02Z", "value" => "7"} [2026-06-17 11:01:53.679] [DEBUG] QUERY OK db=35.5ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "7", "data_usage_mb", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307012, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.680] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:02Z", "value" => "0"} [2026-06-17 11:01:53.704] [DEBUG] QUERY OK db=24.3ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "0", "mobile_data_mb", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307013, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:53.705] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:53.739] [DEBUG] QUERY OK db=32.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39311, ~N[2026-06-17 11:01:53], ~N[2026-06-17 11:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:53.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307014, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:02Z", message: nil, status_log_id: 39311, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:53], updated_at: ~N[2026-06-17 11:01:53]}} [2026-06-17 11:01:59.020] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:01:59.021] [INFO ] Incoming JSON payload: {"oid":"f8965db6-f10c-44cb-8b5c-12de379fec09","sn":"98251226730002","uploadTime":"2026-06-17T11:01:08Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"ram_free_mb","value":"863","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:08Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01:08Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:01:59.022] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f8965db6-f10c-44cb-8b5c-12de379fec09", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:08Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:08Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:08Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:08Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:08Z", "value" => "863"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:08Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:08Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:08Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:08Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:08Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:08Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:08Z", "vendor" => "morefun"} [2026-06-17 11:01:59.022] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:01:59.022] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:01:59.022] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:01:59.026] [DEBUG] QUERY OK source="parameter_templates" db=4.2ms idle=1370.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:01:59.028] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=371.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-06-17 11:01:59.028] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:01:59.031] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:01:59.031] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:01:59.056] [DEBUG] QUERY OK source="tms_terminals" db=24.3ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:01:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:01:59.056] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:01:59.057] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:01:59.089] [DEBUG] QUERY OK source="tms_terminals" db=31.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:01:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:01:59.101] [DEBUG] QUERY OK db=11.2ms idle=31.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f8965db6-f10c-44cb-8b5c-12de379fec09", "2026-06-17T11:01:08Z", ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:01:59.101] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39312, oid: "f8965db6-f10c-44cb-8b5c-12de379fec09", upload_time: "2026-06-17T11:01:08Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]} [2026-06-17 11:01:59.105] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:08Z", "value" => "morefun"} [2026-06-17 11:01:59.134] [DEBUG] QUERY OK db=29.0ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "morefun", "vendor", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307015, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.135] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:08Z", "value" => "kiosk_launcher"} [2026-06-17 11:01:59.162] [DEBUG] QUERY OK db=26.0ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "kiosk_launcher", "model", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307016, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.163] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:08Z", "value" => "1.0"} [2026-06-17 11:01:59.186] [DEBUG] QUERY OK db=23.1ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "1.0", "app_version", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307017, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.187] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:08Z", "value" => "13"} [2026-06-17 11:01:59.209] [DEBUG] QUERY OK db=21.4ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "13", "android_version", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307018, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.209] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:08Z", "value" => "863"} [2026-06-17 11:01:59.220] [DEBUG] QUERY OK db=10.6ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "863", "ram_free_mb", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307019, itemkey: "ram_free_mb", value: "863", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.220] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:08Z", "value" => "WIFI"} [2026-06-17 11:01:59.265] [DEBUG] QUERY OK db=43.8ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "WIFI", "network_type", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307020, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.266] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:08Z", "value" => "true"} [2026-06-17 11:01:59.329] [DEBUG] QUERY OK db=63.0ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "true", "kiosk_active", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307021, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.329] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:08Z", "value" => ""} [2026-06-17 11:01:59.366] [DEBUG] QUERY OK db=36.1ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:08Z", "sim_operator", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307022, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.367] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"} [2026-06-17 11:01:59.403] [DEBUG] QUERY OK db=35.7ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "UNKNOWN", "sim_number", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307023, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.404] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"} [2026-06-17 11:01:59.424] [DEBUG] QUERY OK db=19.8ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "UNKNOWN", "sim_iccid", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307024, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.424] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"} [2026-06-17 11:01:59.439] [DEBUG] QUERY OK db=13.9ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "UNKNOWN", "sim_imsi", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307025, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.439] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"} [2026-06-17 11:01:59.463] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "UNKNOWN", "sim_iccid2", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307026, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.463] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:08Z", "value" => "UNKNOWN"} [2026-06-17 11:01:59.488] [DEBUG] QUERY OK db=24.0ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "UNKNOWN", "sim_imsi2", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307027, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.489] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:08Z", "value" => "7"} [2026-06-17 11:01:59.524] [DEBUG] QUERY OK db=34.9ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "7", "data_usage_mb", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307028, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.526] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:08Z", "value" => "0"} [2026-06-17 11:01:59.542] [DEBUG] QUERY OK db=15.2ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "0", "mobile_data_mb", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307029, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:01:59.545] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:08Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:01:59.569] [DEBUG] QUERY OK db=23.3ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:08Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39312, ~N[2026-06-17 11:01:59], ~N[2026-06-17 11:01:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:01:59.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307030, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:08Z", message: nil, status_log_id: 39312, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:01:59], updated_at: ~N[2026-06-17 11:01:59]}} [2026-06-17 11:02:05.287] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:05.287] [INFO ] Incoming JSON payload: {"oid":"23804cdc-0265-4624-a211-cad6073161ec","sn":"98251226730002","uploadTime":"2026-06-17T11:01:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"ram_free_mb","value":"775","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:05.288] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "23804cdc-0265-4624-a211-cad6073161ec", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:14Z", "value" => "775"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:14Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:14Z", "vendor" => "morefun"} [2026-06-17 11:02:05.288] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:05.288] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:05.288] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:05.290] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=971.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:02:05.291] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=598.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.`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-06-17 11:02:05.292] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:05.293] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:05.293] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:05.312] [DEBUG] QUERY OK source="tms_terminals" db=18.7ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:05.312] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:05.314] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=19.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:05.327] [DEBUG] QUERY OK source="tms_terminals" db=12.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:05.356] [DEBUG] QUERY OK db=28.8ms idle=13.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "23804cdc-0265-4624-a211-cad6073161ec", "2026-06-17T11:01:14Z", ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:05.357] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39313, oid: "23804cdc-0265-4624-a211-cad6073161ec", upload_time: "2026-06-17T11:01:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]} [2026-06-17 11:02:05.357] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:14Z", "value" => "morefun"} [2026-06-17 11:02:05.386] [DEBUG] QUERY OK db=28.5ms queue=0.1ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "morefun", "vendor", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307031, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.386] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:14Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:05.415] [DEBUG] QUERY OK db=28.4ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "kiosk_launcher", "model", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307032, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.415] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:14Z", "value" => "1.0"} [2026-06-17 11:02:05.433] [DEBUG] QUERY OK db=17.5ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "1.0", "app_version", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307033, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.434] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:14Z", "value" => "13"} [2026-06-17 11:02:05.458] [DEBUG] QUERY OK db=24.0ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "13", "android_version", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307034, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.458] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:14Z", "value" => "775"} [2026-06-17 11:02:05.493] [DEBUG] QUERY OK db=34.2ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "775", "ram_free_mb", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307035, itemkey: "ram_free_mb", value: "775", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.493] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:14Z", "value" => "WIFI"} [2026-06-17 11:02:05.518] [DEBUG] QUERY OK db=24.2ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "WIFI", "network_type", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307036, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.518] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:14Z", "value" => "true"} [2026-06-17 11:02:05.538] [DEBUG] QUERY OK db=13.6ms queue=5.5ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "true", "kiosk_active", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307037, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.539] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:14Z", "value" => ""} [2026-06-17 11:02:05.569] [DEBUG] QUERY OK db=29.9ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:14Z", "sim_operator", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307038, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.570] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"} [2026-06-17 11:02:05.608] [DEBUG] QUERY OK db=38.3ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "UNKNOWN", "sim_number", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307039, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.609] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"} [2026-06-17 11:02:05.635] [DEBUG] QUERY OK db=26.0ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "UNKNOWN", "sim_iccid", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307040, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.636] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"} [2026-06-17 11:02:05.665] [DEBUG] QUERY OK db=22.5ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "UNKNOWN", "sim_imsi", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307041, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.666] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"} [2026-06-17 11:02:05.700] [DEBUG] QUERY OK db=34.3ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "UNKNOWN", "sim_iccid2", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307042, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.701] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:14Z", "value" => "UNKNOWN"} [2026-06-17 11:02:05.743] [DEBUG] QUERY OK db=35.0ms queue=7.0ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "UNKNOWN", "sim_imsi2", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307043, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.743] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:14Z", "value" => "7"} [2026-06-17 11:02:05.765] [DEBUG] QUERY OK db=21.3ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "7", "data_usage_mb", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307044, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.766] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:14Z", "value" => "0"} [2026-06-17 11:02:05.783] [DEBUG] QUERY OK db=17.1ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:14Z", "0", "mobile_data_mb", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307045, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:05.784] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:05.811] [DEBUG] QUERY OK db=25.7ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39313, ~N[2026-06-17 11:02:05], ~N[2026-06-17 11:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:05.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307046, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:14Z", message: nil, status_log_id: 39313, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:05], updated_at: ~N[2026-06-17 11:02:05]}} [2026-06-17 11:02:11.192] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:11.192] [INFO ] Incoming JSON payload: {"oid":"d0c877a4-d8c7-480f-ab33-9b2329ba2b35","sn":"98251226730002","uploadTime":"2026-06-17T11:01:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"ram_free_mb","value":"772","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01:21Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:11.193] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d0c877a4-d8c7-480f-ab33-9b2329ba2b35", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:21Z", "value" => "772"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:21Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:21Z", "vendor" => "morefun"} [2026-06-17 11:02:11.193] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:11.193] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:11.193] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:11.195] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.2ms idle=1474.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-06-17 11:02:11.196] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=473.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-06-17 11:02:11.197] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:11.198] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:11.198] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:11.227] [DEBUG] QUERY OK source="tms_terminals" db=27.8ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:11.227] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:11.228] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:11.242] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms queue=0.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:11.265] [DEBUG] QUERY OK db=21.7ms idle=14.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d0c877a4-d8c7-480f-ab33-9b2329ba2b35", "2026-06-17T11:01:21Z", ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:11.265] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39314, oid: "d0c877a4-d8c7-480f-ab33-9b2329ba2b35", upload_time: "2026-06-17T11:01:21Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]} [2026-06-17 11:02:11.265] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:21Z", "value" => "morefun"} [2026-06-17 11:02:11.291] [DEBUG] QUERY OK db=25.6ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "morefun", "vendor", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307047, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.291] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:21Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:11.317] [DEBUG] QUERY OK db=25.7ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "kiosk_launcher", "model", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307048, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.318] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:21Z", "value" => "1.0"} [2026-06-17 11:02:11.333] [DEBUG] QUERY OK db=14.6ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "1.0", "app_version", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307049, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.333] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:21Z", "value" => "13"} [2026-06-17 11:02:11.347] [DEBUG] QUERY OK db=13.1ms queue=0.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "13", "android_version", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307050, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.347] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:21Z", "value" => "772"} [2026-06-17 11:02:11.360] [DEBUG] QUERY OK db=12.3ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "772", "ram_free_mb", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307051, itemkey: "ram_free_mb", value: "772", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.360] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:21Z", "value" => "WIFI"} [2026-06-17 11:02:11.395] [DEBUG] QUERY OK db=34.5ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "WIFI", "network_type", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307052, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.396] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:21Z", "value" => "true"} [2026-06-17 11:02:11.422] [DEBUG] QUERY OK db=25.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "true", "kiosk_active", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307053, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.422] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:21Z", "value" => ""} [2026-06-17 11:02:11.441] [DEBUG] QUERY OK db=18.4ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:21Z", "sim_operator", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307054, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.441] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"} [2026-06-17 11:02:11.456] [DEBUG] QUERY OK db=14.5ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "UNKNOWN", "sim_number", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307055, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.457] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"} [2026-06-17 11:02:11.479] [DEBUG] QUERY OK db=22.1ms queue=0.1ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "UNKNOWN", "sim_iccid", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307056, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.480] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"} [2026-06-17 11:02:11.503] [DEBUG] QUERY OK db=23.4ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "UNKNOWN", "sim_imsi", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307057, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.504] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"} [2026-06-17 11:02:11.534] [DEBUG] QUERY OK db=29.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "UNKNOWN", "sim_iccid2", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307058, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.536] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:21Z", "value" => "UNKNOWN"} [2026-06-17 11:02:11.550] [DEBUG] QUERY OK db=13.2ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "UNKNOWN", "sim_imsi2", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307059, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.551] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:21Z", "value" => "7"} [2026-06-17 11:02:11.566] [DEBUG] QUERY OK db=14.9ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "7", "data_usage_mb", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307060, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.566] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:21Z", "value" => "0"} [2026-06-17 11:02:11.595] [DEBUG] QUERY OK db=28.5ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "0", "mobile_data_mb", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307061, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:11.597] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:11.634] [DEBUG] QUERY OK db=36.6ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39314, ~N[2026-06-17 11:02:11], ~N[2026-06-17 11:02:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:11.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307062, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:21Z", message: nil, status_log_id: 39314, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:11], updated_at: ~N[2026-06-17 11:02:11]}} [2026-06-17 11:02:17.263] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:17.263] [INFO ] Incoming JSON payload: {"oid":"a58b5941-408a-4a8e-aa7d-a7523e3e27ca","sn":"98251226730002","uploadTime":"2026-06-17T11:01:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"ram_free_mb","value":"780","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01:27Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:17.264] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a58b5941-408a-4a8e-aa7d-a7523e3e27ca", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:27Z", "value" => "780"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:27Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:27Z", "vendor" => "morefun"} [2026-06-17 11:02:17.264] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:17.264] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:17.265] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:17.266] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=949.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:02:17.268] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=527.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-06-17 11:02:17.268] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:17.270] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:17.270] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:17.295] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms queue=0.8ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:17.296] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:17.297] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:17.329] [DEBUG] QUERY OK source="tms_terminals" db=31.4ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:17.350] [DEBUG] QUERY OK db=20.0ms idle=32.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a58b5941-408a-4a8e-aa7d-a7523e3e27ca", "2026-06-17T11:01:27Z", ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:17.350] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39315, oid: "a58b5941-408a-4a8e-aa7d-a7523e3e27ca", upload_time: "2026-06-17T11:01:27Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]} [2026-06-17 11:02:17.350] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:27Z", "value" => "morefun"} [2026-06-17 11:02:17.367] [DEBUG] QUERY OK db=16.0ms queue=0.1ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "morefun", "vendor", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307063, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.367] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:27Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:17.388] [DEBUG] QUERY OK db=20.3ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "kiosk_launcher", "model", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307064, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.388] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:27Z", "value" => "1.0"} [2026-06-17 11:02:17.422] [DEBUG] QUERY OK db=33.7ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "1.0", "app_version", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307065, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.423] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:27Z", "value" => "13"} [2026-06-17 11:02:17.456] [DEBUG] QUERY OK db=32.9ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "13", "android_version", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307066, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.456] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:27Z", "value" => "780"} [2026-06-17 11:02:17.471] [DEBUG] QUERY OK db=14.1ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "780", "ram_free_mb", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307067, itemkey: "ram_free_mb", value: "780", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.471] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:27Z", "value" => "WIFI"} [2026-06-17 11:02:17.489] [DEBUG] QUERY OK db=16.8ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "WIFI", "network_type", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307068, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.489] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:27Z", "value" => "true"} [2026-06-17 11:02:17.514] [DEBUG] QUERY OK db=24.3ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "true", "kiosk_active", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307069, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.514] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:27Z", "value" => ""} [2026-06-17 11:02:17.551] [DEBUG] QUERY OK db=35.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:27Z", "sim_operator", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307070, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.551] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"} [2026-06-17 11:02:17.577] [DEBUG] QUERY OK db=24.6ms queue=0.2ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "UNKNOWN", "sim_number", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307071, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.578] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"} [2026-06-17 11:02:17.599] [DEBUG] QUERY OK db=21.2ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "UNKNOWN", "sim_iccid", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307072, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.600] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"} [2026-06-17 11:02:17.624] [DEBUG] QUERY OK db=23.9ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "UNKNOWN", "sim_imsi", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307073, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.624] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"} [2026-06-17 11:02:17.660] [DEBUG] QUERY OK db=35.6ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "UNKNOWN", "sim_iccid2", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307074, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.661] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:27Z", "value" => "UNKNOWN"} [2026-06-17 11:02:17.681] [DEBUG] QUERY OK db=19.6ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "UNKNOWN", "sim_imsi2", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307075, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.682] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:27Z", "value" => "7"} [2026-06-17 11:02:17.700] [DEBUG] QUERY OK db=17.5ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "7", "data_usage_mb", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307076, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.700] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:27Z", "value" => "0"} [2026-06-17 11:02:17.724] [DEBUG] QUERY OK db=23.4ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "0", "mobile_data_mb", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307077, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:17.727] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:17.763] [DEBUG] QUERY OK db=35.3ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39315, ~N[2026-06-17 11:02:17], ~N[2026-06-17 11:02:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:17.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307078, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:27Z", message: nil, status_log_id: 39315, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:17], updated_at: ~N[2026-06-17 11:02:17]}} [2026-06-17 11:02:23.353] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:23.353] [INFO ] Incoming JSON payload: {"oid":"4ef6244a-ee29-4518-9f56-2ae961b134f4","sn":"98251226730002","uploadTime":"2026-06-17T11:01:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"ram_free_mb","value":"780","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01:33Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:23.355] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4ef6244a-ee29-4518-9f56-2ae961b134f4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:33Z", "value" => "780"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:33Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:33Z", "vendor" => "morefun"} [2026-06-17 11:02:23.355] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:23.355] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:23.355] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:23.356] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=594.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-06-17 11:02:23.357] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=37.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-06-17 11:02:23.357] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:23.357] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:23.358] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:23.392] [DEBUG] QUERY OK source="tms_terminals" db=33.7ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:23.392] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:23.393] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=34.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:23.417] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:23.441] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=24.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4ef6244a-ee29-4518-9f56-2ae961b134f4", "2026-06-17T11:01:33Z", ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:23.441] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39316, oid: "4ef6244a-ee29-4518-9f56-2ae961b134f4", upload_time: "2026-06-17T11:01:33Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]} [2026-06-17 11:02:23.442] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:33Z", "value" => "morefun"} [2026-06-17 11:02:23.465] [DEBUG] QUERY OK db=23.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "morefun", "vendor", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307079, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.467] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:33Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:23.568] [DEBUG] QUERY OK db=100.1ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "kiosk_launcher", "model", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307080, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.569] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:33Z", "value" => "1.0"} [2026-06-17 11:02:23.595] [DEBUG] QUERY OK db=25.5ms idle=104.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "1.0", "app_version", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307081, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.598] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:33Z", "value" => "13"} [2026-06-17 11:02:23.612] [DEBUG] QUERY OK db=11.4ms queue=1.7ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "13", "android_version", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307082, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.613] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:33Z", "value" => "780"} [2026-06-17 11:02:23.639] [DEBUG] QUERY OK db=23.9ms queue=0.7ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "780", "ram_free_mb", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307083, itemkey: "ram_free_mb", value: "780", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.639] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:33Z", "value" => "WIFI"} [2026-06-17 11:02:23.675] [DEBUG] QUERY OK db=35.7ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "WIFI", "network_type", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307084, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.676] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:33Z", "value" => "true"} [2026-06-17 11:02:23.707] [DEBUG] QUERY OK db=31.3ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "true", "kiosk_active", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307085, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.708] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:33Z", "value" => ""} [2026-06-17 11:02:23.725] [DEBUG] QUERY OK db=16.5ms queue=0.1ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:33Z", "sim_operator", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307086, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.725] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"} [2026-06-17 11:02:23.757] [DEBUG] QUERY OK db=31.7ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "UNKNOWN", "sim_number", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307087, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.757] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"} [2026-06-17 11:02:23.781] [DEBUG] QUERY OK db=23.7ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "UNKNOWN", "sim_iccid", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307088, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.784] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"} [2026-06-17 11:02:23.813] [DEBUG] QUERY OK db=28.5ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "UNKNOWN", "sim_imsi", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307089, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.814] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"} [2026-06-17 11:02:23.833] [DEBUG] QUERY OK db=16.3ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "UNKNOWN", "sim_iccid2", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307090, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.834] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:33Z", "value" => "UNKNOWN"} [2026-06-17 11:02:23.856] [DEBUG] QUERY OK db=21.8ms queue=0.2ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "UNKNOWN", "sim_imsi2", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307091, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.858] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:33Z", "value" => "7"} [2026-06-17 11:02:23.881] [DEBUG] QUERY OK db=23.2ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "7", "data_usage_mb", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307092, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.882] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:33Z", "value" => "0"} [2026-06-17 11:02:23.906] [DEBUG] QUERY OK db=23.5ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "0", "mobile_data_mb", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307093, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:23.907] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:23.937] [DEBUG] QUERY OK db=27.2ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39316, ~N[2026-06-17 11:02:23], ~N[2026-06-17 11:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:23.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307094, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:33Z", message: nil, status_log_id: 39316, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:23], updated_at: ~N[2026-06-17 11:02:23]}} [2026-06-17 11:02:30.111] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:30.111] [INFO ] Incoming JSON payload: {"oid":"4be41666-486f-4042-8b0f-4d3f10c2643f","sn":"98251226730002","uploadTime":"2026-06-17T11:01:39Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"ram_free_mb","value":"776","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:39Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01:39Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:30.112] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4be41666-486f-4042-8b0f-4d3f10c2643f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:39Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:39Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:39Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:39Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:39Z", "value" => "776"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:39Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:39Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:39Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:39Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:39Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:39Z", "vendor" => "morefun"} [2026-06-17 11:02:30.112] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:30.112] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:30.112] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:30.114] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=791.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-06-17 11:02:30.115] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=311.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.`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-06-17 11:02:30.115] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:30.116] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:30.116] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:30.149] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:30.149] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:30.150] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=33.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:30.174] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:30.198] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=24.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4be41666-486f-4042-8b0f-4d3f10c2643f", "2026-06-17T11:01:39Z", ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:30.198] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39317, oid: "4be41666-486f-4042-8b0f-4d3f10c2643f", upload_time: "2026-06-17T11:01:39Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]} [2026-06-17 11:02:30.198] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:39Z", "value" => "morefun"} [2026-06-17 11:02:30.223] [DEBUG] QUERY OK db=24.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "morefun", "vendor", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307095, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.224] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:39Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:30.273] [DEBUG] QUERY OK db=48.8ms queue=0.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "kiosk_launcher", "model", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307096, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.273] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:39Z", "value" => "1.0"} [2026-06-17 11:02:30.294] [DEBUG] QUERY OK db=20.0ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "1.0", "app_version", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307097, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.294] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:39Z", "value" => "13"} [2026-06-17 11:02:30.328] [DEBUG] QUERY OK db=33.9ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "13", "android_version", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307098, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.329] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:39Z", "value" => "776"} [2026-06-17 11:02:30.354] [DEBUG] QUERY OK db=24.2ms queue=0.3ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "776", "ram_free_mb", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307099, itemkey: "ram_free_mb", value: "776", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.354] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:39Z", "value" => "WIFI"} [2026-06-17 11:02:30.381] [DEBUG] QUERY OK db=26.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "WIFI", "network_type", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307100, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.390] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:39Z", "value" => "true"} [2026-06-17 11:02:30.411] [DEBUG] QUERY OK db=21.3ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "true", "kiosk_active", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307101, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.412] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:39Z", "value" => ""} [2026-06-17 11:02:30.447] [DEBUG] QUERY OK db=23.9ms queue=11.1ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:39Z", "sim_operator", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307102, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.458] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"} [2026-06-17 11:02:30.482] [DEBUG] QUERY OK db=23.1ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "UNKNOWN", "sim_number", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307103, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.483] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"} [2026-06-17 11:02:30.518] [DEBUG] QUERY OK db=34.0ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "UNKNOWN", "sim_iccid", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307104, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.518] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"} [2026-06-17 11:02:30.541] [DEBUG] QUERY OK db=21.6ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "UNKNOWN", "sim_imsi", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307105, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.542] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"} [2026-06-17 11:02:30.574] [DEBUG] QUERY OK db=32.1ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "UNKNOWN", "sim_iccid2", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307106, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.576] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:39Z", "value" => "UNKNOWN"} [2026-06-17 11:02:30.613] [DEBUG] QUERY OK db=36.7ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "UNKNOWN", "sim_imsi2", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307107, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.614] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:39Z", "value" => "7"} [2026-06-17 11:02:30.646] [DEBUG] QUERY OK db=31.6ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "7", "data_usage_mb", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307108, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.651] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:39Z", "value" => "0"} [2026-06-17 11:02:30.679] [DEBUG] QUERY OK db=26.9ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "0", "mobile_data_mb", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307109, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:30.682] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:30.716] [DEBUG] QUERY OK db=32.8ms queue=0.1ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39317, ~N[2026-06-17 11:02:30], ~N[2026-06-17 11:02:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:30.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307110, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:39Z", message: nil, status_log_id: 39317, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:30], updated_at: ~N[2026-06-17 11:02:30]}} [2026-06-17 11:02:35.935] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:35.935] [INFO ] Incoming JSON payload: {"oid":"5905017d-a2e7-4660-b918-ffeae5744972","sn":"98251226730002","uploadTime":"2026-06-17T11:01:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"ram_free_mb","value":"773","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:35.936] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5905017d-a2e7-4660-b918-ffeae5744972", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:45Z", "value" => "773"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:45Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:45Z", "vendor" => "morefun"} [2026-06-17 11:02:35.937] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:35.937] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:35.937] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:35.940] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=1113.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-06-17 11:02:35.942] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=111.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-06-17 11:02:35.942] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:35.944] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:35.944] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:35.961] [DEBUG] QUERY OK source="tms_terminals" db=16.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:35.961] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:35.963] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.6ms idle=17.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:35.998] [DEBUG] QUERY OK source="tms_terminals" db=34.6ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:36.022] [DEBUG] QUERY OK db=23.8ms idle=35.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5905017d-a2e7-4660-b918-ffeae5744972", "2026-06-17T11:01:45Z", ~N[2026-06-17 11:02:35], ~N[2026-06-17 11:02:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:36.023] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39318, oid: "5905017d-a2e7-4660-b918-ffeae5744972", upload_time: "2026-06-17T11:01:45Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:35], updated_at: ~N[2026-06-17 11:02:35]} [2026-06-17 11:02:36.023] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:45Z", "value" => "morefun"} [2026-06-17 11:02:36.037] [DEBUG] QUERY OK db=13.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "morefun", "vendor", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307111, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.038] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:45Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:36.052] [DEBUG] QUERY OK db=13.8ms queue=0.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "kiosk_launcher", "model", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307112, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.053] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:45Z", "value" => "1.0"} [2026-06-17 11:02:36.076] [DEBUG] QUERY OK db=22.6ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "1.0", "app_version", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307113, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.077] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:45Z", "value" => "13"} [2026-06-17 11:02:36.102] [DEBUG] QUERY OK db=24.3ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "13", "android_version", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307114, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.103] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:45Z", "value" => "773"} [2026-06-17 11:02:36.134] [DEBUG] QUERY OK db=30.5ms queue=0.1ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "773", "ram_free_mb", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307115, itemkey: "ram_free_mb", value: "773", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.134] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:45Z", "value" => "WIFI"} [2026-06-17 11:02:36.148] [DEBUG] QUERY OK db=13.1ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "WIFI", "network_type", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307116, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.148] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:45Z", "value" => "true"} [2026-06-17 11:02:36.166] [DEBUG] QUERY OK db=17.6ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "true", "kiosk_active", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307117, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.167] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:45Z", "value" => ""} [2026-06-17 11:02:36.201] [DEBUG] QUERY OK db=32.8ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:45Z", "sim_operator", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307118, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.202] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"} [2026-06-17 11:02:36.225] [DEBUG] QUERY OK db=22.8ms queue=0.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "UNKNOWN", "sim_number", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307119, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.226] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"} [2026-06-17 11:02:36.248] [DEBUG] QUERY OK db=20.3ms queue=0.8ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "UNKNOWN", "sim_iccid", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307120, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.250] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"} [2026-06-17 11:02:36.321] [DEBUG] QUERY OK db=70.7ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "UNKNOWN", "sim_imsi", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307121, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.322] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"} [2026-06-17 11:02:36.372] [DEBUG] QUERY OK db=50.4ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "UNKNOWN", "sim_iccid2", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307122, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.373] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:45Z", "value" => "UNKNOWN"} [2026-06-17 11:02:36.394] [DEBUG] QUERY OK db=18.2ms queue=0.1ms idle=2.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "UNKNOWN", "sim_imsi2", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307123, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.394] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:45Z", "value" => "7"} [2026-06-17 11:02:36.426] [DEBUG] QUERY OK db=31.8ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "7", "data_usage_mb", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307124, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.427] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:45Z", "value" => "0"} [2026-06-17 11:02:36.462] [DEBUG] QUERY OK db=34.1ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:45Z", "0", "mobile_data_mb", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307125, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:36.463] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:36.479] [DEBUG] QUERY OK db=14.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39318, ~N[2026-06-17 11:02:36], ~N[2026-06-17 11:02:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:36.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307126, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:45Z", message: nil, status_log_id: 39318, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:36], updated_at: ~N[2026-06-17 11:02:36]}} [2026-06-17 11:02:41.834] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:41.835] [INFO ] Incoming JSON payload: {"oid":"f5a844b6-c9e0-4b7c-9617-ef9a49e94914","sn":"98251226730002","uploadTime":"2026-06-17T11:01:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"ram_free_mb","value":"760","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01:51Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:41.836] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f5a844b6-c9e0-4b7c-9617-ef9a49e94914", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:51Z", "value" => "760"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:51Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:51Z", "vendor" => "morefun"} [2026-06-17 11:02:41.836] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:41.836] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:41.836] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:41.837] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1516.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:02:41.838] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=989.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.`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-06-17 11:02:41.838] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:41.839] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:41.840] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:41.876] [DEBUG] QUERY OK source="tms_terminals" db=36.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:41.876] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:41.878] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:41.911] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms queue=0.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:41.945] [DEBUG] QUERY OK db=33.0ms idle=33.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f5a844b6-c9e0-4b7c-9617-ef9a49e94914", "2026-06-17T11:01:51Z", ~N[2026-06-17 11:02:41], ~N[2026-06-17 11:02:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:41.945] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39319, oid: "f5a844b6-c9e0-4b7c-9617-ef9a49e94914", upload_time: "2026-06-17T11:01:51Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:41], updated_at: ~N[2026-06-17 11:02:41]} [2026-06-17 11:02:41.945] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:51Z", "value" => "morefun"} [2026-06-17 11:02:41.974] [DEBUG] QUERY OK db=29.0ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "morefun", "vendor", 39319, ~N[2026-06-17 11:02:41], ~N[2026-06-17 11:02:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:41.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307127, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:41], updated_at: ~N[2026-06-17 11:02:41]}} [2026-06-17 11:02:41.975] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:51Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:41.995] [DEBUG] QUERY OK db=19.3ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "kiosk_launcher", "model", 39319, ~N[2026-06-17 11:02:41], ~N[2026-06-17 11:02:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:41.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307128, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:41], updated_at: ~N[2026-06-17 11:02:41]}} [2026-06-17 11:02:41.995] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:51Z", "value" => "1.0"} [2026-06-17 11:02:42.024] [DEBUG] QUERY OK db=28.6ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "1.0", "app_version", 39319, ~N[2026-06-17 11:02:41], ~N[2026-06-17 11:02:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307129, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:41], updated_at: ~N[2026-06-17 11:02:41]}} [2026-06-17 11:02:42.024] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:51Z", "value" => "13"} [2026-06-17 11:02:42.056] [DEBUG] QUERY OK db=31.3ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "13", "android_version", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307130, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.056] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:51Z", "value" => "760"} [2026-06-17 11:02:42.080] [DEBUG] QUERY OK db=22.9ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "760", "ram_free_mb", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307131, itemkey: "ram_free_mb", value: "760", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.080] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:51Z", "value" => "WIFI"} [2026-06-17 11:02:42.104] [DEBUG] QUERY OK db=23.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "WIFI", "network_type", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307132, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.105] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:51Z", "value" => "true"} [2026-06-17 11:02:42.135] [DEBUG] QUERY OK db=30.0ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "true", "kiosk_active", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307133, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.135] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:51Z", "value" => ""} [2026-06-17 11:02:42.162] [DEBUG] QUERY OK db=25.5ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:51Z", "sim_operator", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307134, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.162] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"} [2026-06-17 11:02:42.187] [DEBUG] QUERY OK db=23.8ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "UNKNOWN", "sim_number", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307135, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.187] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"} [2026-06-17 11:02:42.231] [DEBUG] QUERY OK db=44.0ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "UNKNOWN", "sim_iccid", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307136, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.232] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"} [2026-06-17 11:02:42.261] [DEBUG] QUERY OK db=28.7ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "UNKNOWN", "sim_imsi", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307137, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.261] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"} [2026-06-17 11:02:42.304] [DEBUG] QUERY OK db=42.5ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "UNKNOWN", "sim_iccid2", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307138, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.305] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:51Z", "value" => "UNKNOWN"} [2026-06-17 11:02:42.383] [DEBUG] QUERY OK db=77.6ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "UNKNOWN", "sim_imsi2", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307139, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.384] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:51Z", "value" => "7"} [2026-06-17 11:02:42.417] [DEBUG] QUERY OK db=31.7ms idle=79.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "7", "data_usage_mb", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307140, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.417] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:51Z", "value" => "0"} [2026-06-17 11:02:42.455] [DEBUG] QUERY OK db=37.5ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "0", "mobile_data_mb", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307141, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:42.456] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:42.481] [DEBUG] QUERY OK db=23.6ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:51Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39319, ~N[2026-06-17 11:02:42], ~N[2026-06-17 11:02:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:42.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307142, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:51Z", message: nil, status_log_id: 39319, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:42], updated_at: ~N[2026-06-17 11:02:42]}} [2026-06-17 11:02:48.298] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:48.298] [INFO ] Incoming JSON payload: {"oid":"4d8511d9-e289-4fcf-a6e3-739ce11919b6","sn":"98251226730002","uploadTime":"2026-06-17T11:01:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"ram_free_mb","value":"761","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:01:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:01:57Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:48.301] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4d8511d9-e289-4fcf-a6e3-739ce11919b6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:57Z", "value" => "761"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:57Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:01:57Z", "vendor" => "morefun"} [2026-06-17 11:02:48.304] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:48.304] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:48.304] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:48.306] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1437.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-06-17 11:02:48.307] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=434.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-06-17 11:02:48.308] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:48.310] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:48.310] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:48.328] [DEBUG] QUERY OK source="tms_terminals" db=17.4ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:48.328] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:48.330] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=18.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:48.354] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:48.383] [DEBUG] QUERY OK db=28.6ms idle=24.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4d8511d9-e289-4fcf-a6e3-739ce11919b6", "2026-06-17T11:01:57Z", ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:48.384] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39320, oid: "4d8511d9-e289-4fcf-a6e3-739ce11919b6", upload_time: "2026-06-17T11:01:57Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]} [2026-06-17 11:02:48.384] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:01:57Z", "value" => "morefun"} [2026-06-17 11:02:48.404] [DEBUG] QUERY OK db=19.5ms queue=0.5ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "morefun", "vendor", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307143, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.405] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:01:57Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:48.421] [DEBUG] QUERY OK db=15.7ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "kiosk_launcher", "model", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307144, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.421] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:01:57Z", "value" => "1.0"} [2026-06-17 11:02:48.469] [DEBUG] QUERY OK db=46.9ms queue=0.1ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "1.0", "app_version", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307145, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.469] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:01:57Z", "value" => "13"} [2026-06-17 11:02:48.493] [DEBUG] QUERY OK db=23.2ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "13", "android_version", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307146, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.494] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:01:57Z", "value" => "761"} [2026-06-17 11:02:48.519] [DEBUG] QUERY OK db=23.6ms queue=0.2ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "761", "ram_free_mb", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307147, itemkey: "ram_free_mb", value: "761", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.521] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:01:57Z", "value" => "WIFI"} [2026-06-17 11:02:48.538] [DEBUG] QUERY OK db=16.3ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "WIFI", "network_type", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307148, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.539] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:01:57Z", "value" => "true"} [2026-06-17 11:02:48.579] [DEBUG] QUERY OK db=39.9ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "true", "kiosk_active", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307149, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.580] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:01:57Z", "value" => ""} [2026-06-17 11:02:48.604] [DEBUG] QUERY OK db=24.1ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:01:57Z", "sim_operator", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307150, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.606] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"} [2026-06-17 11:02:48.629] [DEBUG] QUERY OK db=22.8ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "UNKNOWN", "sim_number", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307151, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.630] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"} [2026-06-17 11:02:48.644] [DEBUG] QUERY OK db=13.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "UNKNOWN", "sim_iccid", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307152, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.644] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"} [2026-06-17 11:02:48.670] [DEBUG] QUERY OK db=25.5ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "UNKNOWN", "sim_imsi", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307153, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.671] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"} [2026-06-17 11:02:48.695] [DEBUG] QUERY OK db=24.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "UNKNOWN", "sim_iccid2", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307154, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.696] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:01:57Z", "value" => "UNKNOWN"} [2026-06-17 11:02:48.727] [DEBUG] QUERY OK db=31.1ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "UNKNOWN", "sim_imsi2", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307155, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.728] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:01:57Z", "value" => "7"} [2026-06-17 11:02:48.745] [DEBUG] QUERY OK db=16.6ms queue=0.1ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "7", "data_usage_mb", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307156, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.745] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:01:57Z", "value" => "0"} [2026-06-17 11:02:48.769] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "0", "mobile_data_mb", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307157, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:48.770] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:01:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:48.794] [DEBUG] QUERY OK db=23.8ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:01:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39320, ~N[2026-06-17 11:02:48], ~N[2026-06-17 11:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:48.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307158, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:01:57Z", message: nil, status_log_id: 39320, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:48], updated_at: ~N[2026-06-17 11:02:48]}} [2026-06-17 11:02:54.342] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:02:54.342] [INFO ] Incoming JSON payload: {"oid":"49689753-e9dd-41e3-be8a-24fa3640009e","sn":"98251226730002","uploadTime":"2026-06-17T11:02:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"ram_free_mb","value":"775","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:02:54.343] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "49689753-e9dd-41e3-be8a-24fa3640009e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:04Z", "value" => "775"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:04Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:04Z", "vendor" => "morefun"} [2026-06-17 11:02:54.343] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:02:54.343] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:02:54.343] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:02:54.344] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=445.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-06-17 11:02:54.345] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms idle=23.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-06-17 11:02:54.345] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:02:54.347] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:02:54.347] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:02:54.377] [DEBUG] QUERY OK source="tms_terminals" db=30.0ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:02:54], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:02:54.378] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:02:54.379] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=31.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:02:54.410] [DEBUG] QUERY OK source="tms_terminals" db=30.0ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:02:54], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:02:54.436] [DEBUG] QUERY OK db=25.2ms idle=31.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "49689753-e9dd-41e3-be8a-24fa3640009e", "2026-06-17T11:02:04Z", ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:02:54.436] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39321, oid: "49689753-e9dd-41e3-be8a-24fa3640009e", upload_time: "2026-06-17T11:02:04Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]} [2026-06-17 11:02:54.436] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:04Z", "value" => "morefun"} [2026-06-17 11:02:54.468] [DEBUG] QUERY OK db=31.4ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "morefun", "vendor", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307159, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.469] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:04Z", "value" => "kiosk_launcher"} [2026-06-17 11:02:54.493] [DEBUG] QUERY OK db=23.4ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "kiosk_launcher", "model", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307160, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.493] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:04Z", "value" => "1.0"} [2026-06-17 11:02:54.523] [DEBUG] QUERY OK db=28.2ms queue=0.4ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "1.0", "app_version", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307161, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.524] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:04Z", "value" => "13"} [2026-06-17 11:02:54.560] [DEBUG] QUERY OK db=34.3ms queue=0.1ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "13", "android_version", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307162, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.561] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:04Z", "value" => "775"} [2026-06-17 11:02:54.597] [DEBUG] QUERY OK db=33.0ms queue=0.2ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "775", "ram_free_mb", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307163, itemkey: "ram_free_mb", value: "775", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.598] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:04Z", "value" => "WIFI"} [2026-06-17 11:02:54.623] [DEBUG] QUERY OK db=23.5ms queue=0.5ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "WIFI", "network_type", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307164, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.625] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:04Z", "value" => "true"} [2026-06-17 11:02:54.653] [DEBUG] QUERY OK db=26.7ms queue=0.4ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "true", "kiosk_active", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307165, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.653] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:04Z", "value" => ""} [2026-06-17 11:02:54.677] [DEBUG] QUERY OK db=23.3ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:04Z", "sim_operator", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307166, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.677] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"} [2026-06-17 11:02:54.706] [DEBUG] QUERY OK db=28.2ms queue=0.3ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "UNKNOWN", "sim_number", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307167, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.706] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"} [2026-06-17 11:02:54.740] [DEBUG] QUERY OK db=33.4ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "UNKNOWN", "sim_iccid", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307168, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.741] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"} [2026-06-17 11:02:54.766] [DEBUG] QUERY OK db=24.7ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "UNKNOWN", "sim_imsi", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307169, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.767] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"} [2026-06-17 11:02:54.787] [DEBUG] QUERY OK db=18.1ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "UNKNOWN", "sim_iccid2", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307170, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.789] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:04Z", "value" => "UNKNOWN"} [2026-06-17 11:02:54.833] [DEBUG] QUERY OK db=42.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "UNKNOWN", "sim_imsi2", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307171, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.834] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:04Z", "value" => "7"} [2026-06-17 11:02:54.857] [DEBUG] QUERY OK db=22.8ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "7", "data_usage_mb", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307172, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.860] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:04Z", "value" => "0"} [2026-06-17 11:02:54.893] [DEBUG] QUERY OK db=31.9ms queue=0.5ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:04Z", "0", "mobile_data_mb", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307173, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:02:54.894] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:02:54.937] [DEBUG] QUERY OK db=42.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39321, ~N[2026-06-17 11:02:54], ~N[2026-06-17 11:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:02:54.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307174, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:04Z", message: nil, status_log_id: 39321, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:02:54], updated_at: ~N[2026-06-17 11:02:54]}} [2026-06-17 11:03:00.412] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:00.412] [INFO ] Incoming JSON payload: {"oid":"57896a09-6615-467c-8d6e-ebad51c2e2f6","sn":"98251226730002","uploadTime":"2026-06-17T11:02:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"ram_free_mb","value":"775","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:10Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:00.413] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "57896a09-6615-467c-8d6e-ebad51c2e2f6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:10Z", "value" => "775"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:10Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:10Z", "vendor" => "morefun"} [2026-06-17 11:03:00.413] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:00.413] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:00.413] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:00.416] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=493.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-06-17 11:03:00.417] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=95.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-06-17 11:03:00.417] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:00.418] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:00.419] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:00.463] [DEBUG] QUERY OK source="tms_terminals" db=44.6ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:00.464] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:00.465] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:00.481] [DEBUG] QUERY OK source="tms_terminals" db=14.1ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:00], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:00.508] [DEBUG] QUERY OK db=24.8ms queue=0.2ms idle=17.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "57896a09-6615-467c-8d6e-ebad51c2e2f6", "2026-06-17T11:02:10Z", ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:00.508] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39322, oid: "57896a09-6615-467c-8d6e-ebad51c2e2f6", upload_time: "2026-06-17T11:02:10Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]} [2026-06-17 11:03:00.508] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:10Z", "value" => "morefun"} [2026-06-17 11:03:00.537] [DEBUG] QUERY OK db=28.5ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "morefun", "vendor", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307175, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.538] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:10Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:00.566] [DEBUG] QUERY OK db=26.3ms queue=1.2ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "kiosk_launcher", "model", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307176, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.566] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:10Z", "value" => "1.0"} [2026-06-17 11:03:00.580] [DEBUG] QUERY OK db=13.8ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "1.0", "app_version", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307177, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.582] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:10Z", "value" => "13"} [2026-06-17 11:03:00.599] [DEBUG] QUERY OK db=17.1ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "13", "android_version", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307178, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.599] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:10Z", "value" => "775"} [2026-06-17 11:03:00.623] [DEBUG] QUERY OK db=23.3ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "775", "ram_free_mb", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307179, itemkey: "ram_free_mb", value: "775", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.623] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:10Z", "value" => "WIFI"} [2026-06-17 11:03:00.687] [DEBUG] QUERY OK db=63.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "WIFI", "network_type", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307180, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.687] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:10Z", "value" => "true"} [2026-06-17 11:03:00.706] [DEBUG] QUERY OK db=18.0ms idle=64.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "true", "kiosk_active", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307181, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.706] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:10Z", "value" => ""} [2026-06-17 11:03:00.729] [DEBUG] QUERY OK db=22.8ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:10Z", "sim_operator", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307182, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.731] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"} [2026-06-17 11:03:00.758] [DEBUG] QUERY OK db=27.3ms queue=0.1ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "UNKNOWN", "sim_number", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307183, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.759] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"} [2026-06-17 11:03:00.782] [DEBUG] QUERY OK db=22.5ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "UNKNOWN", "sim_iccid", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.782] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307184, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.782] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"} [2026-06-17 11:03:00.811] [DEBUG] QUERY OK db=27.3ms queue=0.9ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "UNKNOWN", "sim_imsi", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307185, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.811] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"} [2026-06-17 11:03:00.835] [DEBUG] QUERY OK db=22.8ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "UNKNOWN", "sim_iccid2", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307186, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.835] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:10Z", "value" => "UNKNOWN"} [2026-06-17 11:03:00.859] [DEBUG] QUERY OK db=23.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "UNKNOWN", "sim_imsi2", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307187, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.860] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:10Z", "value" => "7"} [2026-06-17 11:03:00.879] [DEBUG] QUERY OK db=18.5ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "7", "data_usage_mb", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307188, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.879] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:10Z", "value" => "0"} [2026-06-17 11:03:00.898] [DEBUG] QUERY OK db=17.7ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "0", "mobile_data_mb", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307189, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:00.899] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:00.929] [DEBUG] QUERY OK db=28.6ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39322, ~N[2026-06-17 11:03:00], ~N[2026-06-17 11:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:00.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307190, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:10Z", message: nil, status_log_id: 39322, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:00], updated_at: ~N[2026-06-17 11:03:00]}} [2026-06-17 11:03:06.493] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:06.494] [INFO ] Incoming JSON payload: {"oid":"e4ede76b-3baf-4473-9a7e-4824a663c1c4","sn":"98251226730002","uploadTime":"2026-06-17T11:02:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"ram_free_mb","value":"774","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:16Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:06.497] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e4ede76b-3baf-4473-9a7e-4824a663c1c4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:16Z", "value" => "774"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:16Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:16Z", "vendor" => "morefun"} [2026-06-17 11:03:06.497] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:06.497] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:06.497] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:06.498] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=547.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-06-17 11:03:06.502] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=171.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-06-17 11:03:06.502] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:06.503] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:06.504] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:06.567] [DEBUG] QUERY OK source="tms_terminals" db=63.2ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:06], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:06.567] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:06.570] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=64.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:06.587] [DEBUG] QUERY OK source="tms_terminals" db=16.7ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:06], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:06.616] [DEBUG] QUERY OK db=28.4ms idle=17.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e4ede76b-3baf-4473-9a7e-4824a663c1c4", "2026-06-17T11:02:16Z", ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:06.616] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39323, oid: "e4ede76b-3baf-4473-9a7e-4824a663c1c4", upload_time: "2026-06-17T11:02:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]} [2026-06-17 11:03:06.617] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:16Z", "value" => "morefun"} [2026-06-17 11:03:06.649] [DEBUG] QUERY OK db=31.8ms queue=0.1ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "morefun", "vendor", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307191, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.649] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:16Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:06.663] [DEBUG] QUERY OK db=13.4ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "kiosk_launcher", "model", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307192, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.664] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:16Z", "value" => "1.0"} [2026-06-17 11:03:06.679] [DEBUG] QUERY OK db=15.3ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "1.0", "app_version", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307193, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.680] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:16Z", "value" => "13"} [2026-06-17 11:03:06.710] [DEBUG] QUERY OK db=30.0ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "13", "android_version", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307194, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.711] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:16Z", "value" => "774"} [2026-06-17 11:03:06.736] [DEBUG] QUERY OK db=24.4ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "774", "ram_free_mb", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307195, itemkey: "ram_free_mb", value: "774", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.736] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:16Z", "value" => "WIFI"} [2026-06-17 11:03:06.759] [DEBUG] QUERY OK db=22.3ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "WIFI", "network_type", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307196, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.759] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:16Z", "value" => "true"} [2026-06-17 11:03:06.772] [DEBUG] QUERY OK db=12.6ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "true", "kiosk_active", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307197, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.773] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:16Z", "value" => ""} [2026-06-17 11:03:06.788] [DEBUG] QUERY OK db=15.0ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:16Z", "sim_operator", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307198, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.788] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"} [2026-06-17 11:03:06.823] [DEBUG] QUERY OK db=33.2ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "UNKNOWN", "sim_number", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307199, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.823] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"} [2026-06-17 11:03:06.847] [DEBUG] QUERY OK db=23.3ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "UNKNOWN", "sim_iccid", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307200, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.847] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"} [2026-06-17 11:03:06.866] [DEBUG] QUERY OK db=17.8ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "UNKNOWN", "sim_imsi", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307201, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.867] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"} [2026-06-17 11:03:06.885] [DEBUG] QUERY OK db=18.2ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "UNKNOWN", "sim_iccid2", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307202, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.887] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:16Z", "value" => "UNKNOWN"} [2026-06-17 11:03:06.914] [DEBUG] QUERY OK db=27.2ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "UNKNOWN", "sim_imsi2", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307203, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.915] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:16Z", "value" => "7"} [2026-06-17 11:03:06.939] [DEBUG] QUERY OK db=23.5ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "7", "data_usage_mb", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307204, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.939] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:16Z", "value" => "0"} [2026-06-17 11:03:06.962] [DEBUG] QUERY OK db=23.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "0", "mobile_data_mb", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307205, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:06.963] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:06.978] [DEBUG] QUERY OK db=13.4ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:16Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39323, ~N[2026-06-17 11:03:06], ~N[2026-06-17 11:03:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:06.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307206, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:16Z", message: nil, status_log_id: 39323, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:06], updated_at: ~N[2026-06-17 11:03:06]}} [2026-06-17 11:03:12.899] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:12.899] [INFO ] Incoming JSON payload: {"oid":"42dcb6d7-19e4-4025-82a9-500b6ced0bb9","sn":"98251226730002","uploadTime":"2026-06-17T11:02:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"ram_free_mb","value":"772","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:22Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:12.900] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "42dcb6d7-19e4-4025-82a9-500b6ced0bb9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:22Z", "value" => "772"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:22Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:22Z", "vendor" => "morefun"} [2026-06-17 11:03:12.900] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:12.900] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:12.900] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:12.901] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=912.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:03:12.902] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=572.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-06-17 11:03:12.902] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:12.903] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:12.904] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:12.936] [DEBUG] QUERY OK source="tms_terminals" db=32.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:12.937] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:12.940] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.9ms idle=34.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:12.964] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:12.993] [DEBUG] QUERY OK db=28.6ms idle=24.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "42dcb6d7-19e4-4025-82a9-500b6ced0bb9", "2026-06-17T11:02:22Z", ~N[2026-06-17 11:03:12], ~N[2026-06-17 11:03:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:12.993] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39324, oid: "42dcb6d7-19e4-4025-82a9-500b6ced0bb9", upload_time: "2026-06-17T11:02:22Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:12], updated_at: ~N[2026-06-17 11:03:12]} [2026-06-17 11:03:12.993] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:22Z", "value" => "morefun"} [2026-06-17 11:03:13.027] [DEBUG] QUERY OK db=32.3ms idle=4.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "morefun", "vendor", 39324, ~N[2026-06-17 11:03:12], ~N[2026-06-17 11:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307207, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:12], updated_at: ~N[2026-06-17 11:03:12]}} [2026-06-17 11:03:13.028] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:22Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:13.053] [DEBUG] QUERY OK db=24.9ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "kiosk_launcher", "model", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307208, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.054] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:22Z", "value" => "1.0"} [2026-06-17 11:03:13.089] [DEBUG] QUERY OK db=33.7ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "1.0", "app_version", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307209, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.089] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:22Z", "value" => "13"} [2026-06-17 11:03:13.122] [DEBUG] QUERY OK db=32.6ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "13", "android_version", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307210, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.123] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:22Z", "value" => "772"} [2026-06-17 11:03:13.167] [DEBUG] QUERY OK db=43.3ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "772", "ram_free_mb", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307211, itemkey: "ram_free_mb", value: "772", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.167] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:22Z", "value" => "WIFI"} [2026-06-17 11:03:13.190] [DEBUG] QUERY OK db=23.0ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "WIFI", "network_type", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307212, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.191] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:22Z", "value" => "true"} [2026-06-17 11:03:13.223] [DEBUG] QUERY OK db=31.1ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "true", "kiosk_active", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307213, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.223] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:22Z", "value" => ""} [2026-06-17 11:03:13.263] [DEBUG] QUERY OK db=39.3ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:22Z", "sim_operator", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307214, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.264] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"} [2026-06-17 11:03:13.299] [DEBUG] QUERY OK db=35.2ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "UNKNOWN", "sim_number", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307215, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.300] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"} [2026-06-17 11:03:13.332] [DEBUG] QUERY OK db=30.9ms queue=0.5ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "UNKNOWN", "sim_iccid", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307216, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.334] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"} [2026-06-17 11:03:13.378] [DEBUG] QUERY OK db=43.6ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "UNKNOWN", "sim_imsi", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307217, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.378] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"} [2026-06-17 11:03:13.405] [DEBUG] QUERY OK db=26.7ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "UNKNOWN", "sim_iccid2", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307218, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.407] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:22Z", "value" => "UNKNOWN"} [2026-06-17 11:03:13.438] [DEBUG] QUERY OK db=30.7ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "UNKNOWN", "sim_imsi2", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307219, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.439] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:22Z", "value" => "7"} [2026-06-17 11:03:13.475] [DEBUG] QUERY OK db=35.3ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "7", "data_usage_mb", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307220, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.475] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:22Z", "value" => "0"} [2026-06-17 11:03:13.500] [DEBUG] QUERY OK db=23.9ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "0", "mobile_data_mb", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307221, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:13.502] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:13.532] [DEBUG] QUERY OK db=29.1ms queue=0.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:22Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39324, ~N[2026-06-17 11:03:13], ~N[2026-06-17 11:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:13.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307222, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:22Z", message: nil, status_log_id: 39324, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:13], updated_at: ~N[2026-06-17 11:03:13]}} [2026-06-17 11:03:19.124] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:19.124] [INFO ] Incoming JSON payload: {"oid":"0b5ef35e-6af6-46d9-a5dc-8f4a3f494bf8","sn":"98251226730002","uploadTime":"2026-06-17T11:02:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"ram_free_mb","value":"854","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:28Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:19.125] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0b5ef35e-6af6-46d9-a5dc-8f4a3f494bf8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:28Z", "value" => "854"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:28Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:28Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:28Z", "vendor" => "morefun"} [2026-06-17 11:03:19.125] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:19.125] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:19.125] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:19.127] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=797.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-06-17 11:03:19.127] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=121.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-06-17 11:03:19.128] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:19.129] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:19.129] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:19.167] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:19.167] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:19.168] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=38.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:19.188] [DEBUG] QUERY OK source="tms_terminals" db=20.0ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:19.220] [DEBUG] QUERY OK db=31.6ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0b5ef35e-6af6-46d9-a5dc-8f4a3f494bf8", "2026-06-17T11:02:28Z", ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:19.220] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39325, oid: "0b5ef35e-6af6-46d9-a5dc-8f4a3f494bf8", upload_time: "2026-06-17T11:02:28Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]} [2026-06-17 11:03:19.221] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:28Z", "value" => "morefun"} [2026-06-17 11:03:19.266] [DEBUG] QUERY OK db=44.1ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "morefun", "vendor", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307223, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.266] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:28Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:19.307] [DEBUG] QUERY OK db=39.7ms queue=0.3ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "kiosk_launcher", "model", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307224, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.307] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:28Z", "value" => "1.0"} [2026-06-17 11:03:19.348] [DEBUG] QUERY OK db=40.9ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "1.0", "app_version", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307225, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.349] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:28Z", "value" => "13"} [2026-06-17 11:03:19.381] [DEBUG] QUERY OK db=30.1ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "13", "android_version", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307226, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.383] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:28Z", "value" => "854"} [2026-06-17 11:03:19.412] [DEBUG] QUERY OK db=28.3ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "854", "ram_free_mb", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307227, itemkey: "ram_free_mb", value: "854", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.412] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:28Z", "value" => "WIFI"} [2026-06-17 11:03:19.439] [DEBUG] QUERY OK db=26.7ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "WIFI", "network_type", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307228, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.440] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:28Z", "value" => "true"} [2026-06-17 11:03:19.475] [DEBUG] QUERY OK db=33.1ms queue=1.2ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "true", "kiosk_active", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307229, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.476] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:28Z", "value" => ""} [2026-06-17 11:03:19.500] [DEBUG] QUERY OK db=24.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:28Z", "sim_operator", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307230, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.500] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"} [2026-06-17 11:03:19.529] [DEBUG] QUERY OK db=28.0ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "UNKNOWN", "sim_number", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307231, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.529] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"} [2026-06-17 11:03:19.551] [DEBUG] QUERY OK db=21.8ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "UNKNOWN", "sim_iccid", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307232, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.552] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"} [2026-06-17 11:03:19.576] [DEBUG] QUERY OK db=23.2ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "UNKNOWN", "sim_imsi", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307233, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.576] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"} [2026-06-17 11:03:19.619] [DEBUG] QUERY OK db=40.7ms queue=0.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "UNKNOWN", "sim_iccid2", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307234, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.619] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:28Z", "value" => "UNKNOWN"} [2026-06-17 11:03:19.645] [DEBUG] QUERY OK db=25.5ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "UNKNOWN", "sim_imsi2", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307235, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.646] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:28Z", "value" => "7"} [2026-06-17 11:03:19.674] [DEBUG] QUERY OK db=28.2ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "7", "data_usage_mb", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307236, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.692] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:28Z", "value" => "0"} [2026-06-17 11:03:19.728] [DEBUG] QUERY OK db=23.3ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "0", "mobile_data_mb", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307237, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:19.735] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:28Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:19.773] [DEBUG] QUERY OK db=33.3ms queue=0.2ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:28Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39325, ~N[2026-06-17 11:03:19], ~N[2026-06-17 11:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:19.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307238, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:28Z", message: nil, status_log_id: 39325, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:19], updated_at: ~N[2026-06-17 11:03:19]}} [2026-06-17 11:03:25.190] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:25.191] [INFO ] Incoming JSON payload: {"oid":"28dec93b-26a3-4032-9029-fe2cea8f4624","sn":"98251226730002","uploadTime":"2026-06-17T11:02:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"ram_free_mb","value":"835","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:35Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:25.193] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "28dec93b-26a3-4032-9029-fe2cea8f4624", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:35Z", "value" => "835"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:35Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:35Z", "vendor" => "morefun"} [2026-06-17 11:03:25.193] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:25.193] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:25.193] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:25.194] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=1170.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-06-17 11:03:25.195] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=169.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.`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-06-17 11:03:25.195] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:25.196] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:25.197] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:25.222] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:25.222] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:25.223] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:25.276] [DEBUG] QUERY OK source="tms_terminals" db=52.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:25.310] [DEBUG] QUERY OK db=33.5ms idle=52.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "28dec93b-26a3-4032-9029-fe2cea8f4624", "2026-06-17T11:02:35Z", ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:25.310] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39326, oid: "28dec93b-26a3-4032-9029-fe2cea8f4624", upload_time: "2026-06-17T11:02:35Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]} [2026-06-17 11:03:25.315] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:35Z", "value" => "morefun"} [2026-06-17 11:03:25.351] [DEBUG] QUERY OK db=35.6ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "morefun", "vendor", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307239, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.351] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:35Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:25.385] [DEBUG] QUERY OK db=33.0ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "kiosk_launcher", "model", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307240, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.386] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:35Z", "value" => "1.0"} [2026-06-17 11:03:25.413] [DEBUG] QUERY OK db=27.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "1.0", "app_version", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307241, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.414] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:35Z", "value" => "13"} [2026-06-17 11:03:25.443] [DEBUG] QUERY OK db=29.1ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "13", "android_version", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.443] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307242, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.443] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:35Z", "value" => "835"} [2026-06-17 11:03:25.467] [DEBUG] QUERY OK db=23.3ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "835", "ram_free_mb", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307243, itemkey: "ram_free_mb", value: "835", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.468] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:35Z", "value" => "WIFI"} [2026-06-17 11:03:25.496] [DEBUG] QUERY OK db=28.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "WIFI", "network_type", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307244, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.497] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:35Z", "value" => "true"} [2026-06-17 11:03:25.529] [DEBUG] QUERY OK db=32.3ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "true", "kiosk_active", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307245, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.530] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:35Z", "value" => ""} [2026-06-17 11:03:25.564] [DEBUG] QUERY OK db=32.6ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:35Z", "sim_operator", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307246, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.564] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"} [2026-06-17 11:03:25.588] [DEBUG] QUERY OK db=23.6ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "UNKNOWN", "sim_number", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307247, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.590] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"} [2026-06-17 11:03:25.619] [DEBUG] QUERY OK db=27.8ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "UNKNOWN", "sim_iccid", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307248, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.622] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"} [2026-06-17 11:03:25.653] [DEBUG] QUERY OK db=30.9ms queue=0.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "UNKNOWN", "sim_imsi", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307249, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.654] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"} [2026-06-17 11:03:25.694] [DEBUG] QUERY OK db=39.4ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "UNKNOWN", "sim_iccid2", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307250, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.694] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:35Z", "value" => "UNKNOWN"} [2026-06-17 11:03:25.718] [DEBUG] QUERY OK db=23.4ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "UNKNOWN", "sim_imsi2", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307251, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.719] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:35Z", "value" => "7"} [2026-06-17 11:03:25.746] [DEBUG] QUERY OK db=25.9ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "7", "data_usage_mb", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307252, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.746] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:35Z", "value" => "0"} [2026-06-17 11:03:25.775] [DEBUG] QUERY OK db=28.1ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "0", "mobile_data_mb", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307253, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:25.776] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:25.806] [DEBUG] QUERY OK db=28.7ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39326, ~N[2026-06-17 11:03:25], ~N[2026-06-17 11:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:25.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307254, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:35Z", message: nil, status_log_id: 39326, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:25], updated_at: ~N[2026-06-17 11:03:25]}} [2026-06-17 11:03:31.278] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:31.278] [INFO ] Incoming JSON payload: {"oid":"ebc39d9c-ce36-44d8-bdff-4bc422f1c171","sn":"98251226730002","uploadTime":"2026-06-17T11:02:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"ram_free_mb","value":"772","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:41Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:31.279] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ebc39d9c-ce36-44d8-bdff-4bc422f1c171", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:41Z", "value" => "772"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:41Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:41Z", "vendor" => "morefun"} [2026-06-17 11:03:31.279] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:31.279] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:31.279] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:31.280] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1236.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-06-17 11:03:31.282] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=234.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-06-17 11:03:31.282] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:31.283] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:31.283] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:31.304] [DEBUG] QUERY OK source="tms_terminals" db=19.2ms queue=0.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:31.304] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:31.305] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:31.340] [DEBUG] QUERY OK source="tms_terminals" db=34.2ms decode=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:31.376] [DEBUG] QUERY OK db=35.5ms idle=35.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ebc39d9c-ce36-44d8-bdff-4bc422f1c171", "2026-06-17T11:02:41Z", ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:31.377] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39327, oid: "ebc39d9c-ce36-44d8-bdff-4bc422f1c171", upload_time: "2026-06-17T11:02:41Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]} [2026-06-17 11:03:31.377] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:41Z", "value" => "morefun"} [2026-06-17 11:03:31.401] [DEBUG] QUERY OK db=23.7ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "morefun", "vendor", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307255, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.401] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:41Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:31.418] [DEBUG] QUERY OK db=16.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "kiosk_launcher", "model", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307256, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.419] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:41Z", "value" => "1.0"} [2026-06-17 11:03:31.450] [DEBUG] QUERY OK db=30.9ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "1.0", "app_version", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307257, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.451] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:41Z", "value" => "13"} [2026-06-17 11:03:31.485] [DEBUG] QUERY OK db=34.2ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "13", "android_version", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307258, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.486] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:41Z", "value" => "772"} [2026-06-17 11:03:31.512] [DEBUG] QUERY OK db=26.1ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "772", "ram_free_mb", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307259, itemkey: "ram_free_mb", value: "772", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.513] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:41Z", "value" => "WIFI"} [2026-06-17 11:03:31.536] [DEBUG] QUERY OK db=18.6ms queue=2.7ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "WIFI", "network_type", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307260, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.536] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:41Z", "value" => "true"} [2026-06-17 11:03:31.571] [DEBUG] QUERY OK db=33.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "true", "kiosk_active", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307261, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.571] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:41Z", "value" => ""} [2026-06-17 11:03:31.598] [DEBUG] QUERY OK db=26.1ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:41Z", "sim_operator", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307262, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.598] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"} [2026-06-17 11:03:31.628] [DEBUG] QUERY OK db=29.5ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "UNKNOWN", "sim_number", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307263, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.628] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"} [2026-06-17 11:03:31.647] [DEBUG] QUERY OK db=18.7ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "UNKNOWN", "sim_iccid", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307264, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.648] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"} [2026-06-17 11:03:31.664] [DEBUG] QUERY OK db=15.8ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "UNKNOWN", "sim_imsi", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307265, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.665] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"} [2026-06-17 11:03:31.700] [DEBUG] QUERY OK db=35.2ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "UNKNOWN", "sim_iccid2", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307266, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.701] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:41Z", "value" => "UNKNOWN"} [2026-06-17 11:03:31.726] [DEBUG] QUERY OK db=25.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "UNKNOWN", "sim_imsi2", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307267, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.727] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:41Z", "value" => "7"} [2026-06-17 11:03:31.750] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "7", "data_usage_mb", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307268, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.751] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:41Z", "value" => "0"} [2026-06-17 11:03:31.774] [DEBUG] QUERY OK db=20.6ms queue=0.1ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "0", "mobile_data_mb", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307269, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:31.774] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:31.797] [DEBUG] QUERY OK db=20.7ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39327, ~N[2026-06-17 11:03:31], ~N[2026-06-17 11:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:31.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307270, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:41Z", message: nil, status_log_id: 39327, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:31], updated_at: ~N[2026-06-17 11:03:31]}} [2026-06-17 11:03:37.362] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:37.362] [INFO ] Incoming JSON payload: {"oid":"03c306ff-7c3b-4698-9014-6bc584953c10","sn":"98251226730002","uploadTime":"2026-06-17T11:02:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"ram_free_mb","value":"785","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:47Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:37.363] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "03c306ff-7c3b-4698-9014-6bc584953c10", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:47Z", "value" => "785"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:47Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:47Z", "vendor" => "morefun"} [2026-06-17 11:03:37.363] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:37.363] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:37.363] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:37.367] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms queue=0.7ms idle=290.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:03:37.368] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=37.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.`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-06-17 11:03:37.368] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:37.371] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=1.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:37.371] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:37.413] [DEBUG] QUERY OK source="tms_terminals" db=38.2ms decode=2.7ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:37], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:37.413] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:37.416] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=42.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:37.443] [DEBUG] QUERY OK source="tms_terminals" db=26.1ms queue=0.2ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:37], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:37.462] [DEBUG] QUERY OK db=18.5ms idle=27.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "03c306ff-7c3b-4698-9014-6bc584953c10", "2026-06-17T11:02:47Z", ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:37.462] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39328, oid: "03c306ff-7c3b-4698-9014-6bc584953c10", upload_time: "2026-06-17T11:02:47Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]} [2026-06-17 11:03:37.463] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:47Z", "value" => "morefun"} [2026-06-17 11:03:37.489] [DEBUG] QUERY OK db=26.2ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "morefun", "vendor", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307271, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.490] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:47Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:37.516] [DEBUG] QUERY OK db=25.9ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "kiosk_launcher", "model", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307272, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.516] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:47Z", "value" => "1.0"} [2026-06-17 11:03:37.543] [DEBUG] QUERY OK db=26.0ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "1.0", "app_version", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307273, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.543] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:47Z", "value" => "13"} [2026-06-17 11:03:37.578] [DEBUG] QUERY OK db=33.4ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "13", "android_version", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307274, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.578] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:47Z", "value" => "785"} [2026-06-17 11:03:37.597] [DEBUG] QUERY OK db=18.2ms queue=0.1ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "785", "ram_free_mb", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307275, itemkey: "ram_free_mb", value: "785", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.597] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:47Z", "value" => "WIFI"} [2026-06-17 11:03:37.620] [DEBUG] QUERY OK db=22.6ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "WIFI", "network_type", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307276, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.621] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:47Z", "value" => "true"} [2026-06-17 11:03:37.645] [DEBUG] QUERY OK db=23.5ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "true", "kiosk_active", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307277, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.645] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:47Z", "value" => ""} [2026-06-17 11:03:37.681] [DEBUG] QUERY OK db=35.2ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:47Z", "sim_operator", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307278, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.681] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"} [2026-06-17 11:03:37.707] [DEBUG] QUERY OK db=24.9ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "UNKNOWN", "sim_number", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307279, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.707] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"} [2026-06-17 11:03:37.734] [DEBUG] QUERY OK db=26.0ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "UNKNOWN", "sim_iccid", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307280, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.736] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"} [2026-06-17 11:03:37.783] [DEBUG] QUERY OK db=44.8ms queue=0.7ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "UNKNOWN", "sim_imsi", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307281, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.783] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"} [2026-06-17 11:03:37.808] [DEBUG] QUERY OK db=24.7ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "UNKNOWN", "sim_iccid2", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307282, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.809] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:47Z", "value" => "UNKNOWN"} [2026-06-17 11:03:37.848] [DEBUG] QUERY OK db=37.9ms queue=0.1ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "UNKNOWN", "sim_imsi2", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307283, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.848] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:47Z", "value" => "7"} [2026-06-17 11:03:37.879] [DEBUG] QUERY OK db=30.1ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "7", "data_usage_mb", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307284, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.879] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:47Z", "value" => "0"} [2026-06-17 11:03:37.903] [DEBUG] QUERY OK db=23.7ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "0", "mobile_data_mb", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307285, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:37.908] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:37.944] [DEBUG] QUERY OK db=33.1ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:47Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39328, ~N[2026-06-17 11:03:37], ~N[2026-06-17 11:03:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:37.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307286, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:47Z", message: nil, status_log_id: 39328, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:37], updated_at: ~N[2026-06-17 11:03:37]}} [2026-06-17 11:03:43.508] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:43.508] [INFO ] Incoming JSON payload: {"oid":"110e08c6-88e4-4d99-8594-7885c20b613a","sn":"98251226730002","uploadTime":"2026-06-17T11:02:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"ram_free_mb","value":"777","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:53Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:43.509] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "110e08c6-88e4-4d99-8594-7885c20b613a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:53Z", "value" => "777"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:53Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:53Z", "vendor" => "morefun"} [2026-06-17 11:03:43.509] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:43.509] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:43.509] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:43.512] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=411.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-06-17 11:03:43.513] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=0.1ms idle=177.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.`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-06-17 11:03:43.513] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:43.517] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:43.517] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:43.549] [DEBUG] QUERY OK source="tms_terminals" db=31.4ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:43.549] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:43.551] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=32.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:43.584] [DEBUG] QUERY OK source="tms_terminals" db=32.7ms queue=0.2ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:43.620] [DEBUG] QUERY OK db=35.6ms idle=33.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "110e08c6-88e4-4d99-8594-7885c20b613a", "2026-06-17T11:02:53Z", ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:43.621] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39329, oid: "110e08c6-88e4-4d99-8594-7885c20b613a", upload_time: "2026-06-17T11:02:53Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]} [2026-06-17 11:03:43.621] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:53Z", "value" => "morefun"} [2026-06-17 11:03:43.640] [DEBUG] QUERY OK db=18.4ms queue=0.5ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "morefun", "vendor", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307287, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.640] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:53Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:43.658] [DEBUG] QUERY OK db=17.3ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "kiosk_launcher", "model", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307288, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.660] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:53Z", "value" => "1.0"} [2026-06-17 11:03:43.692] [DEBUG] QUERY OK db=31.5ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "1.0", "app_version", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307289, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.693] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:53Z", "value" => "13"} [2026-06-17 11:03:43.726] [DEBUG] QUERY OK db=29.9ms queue=2.9ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "13", "android_version", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307290, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.727] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:53Z", "value" => "777"} [2026-06-17 11:03:43.747] [DEBUG] QUERY OK db=19.5ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "777", "ram_free_mb", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307291, itemkey: "ram_free_mb", value: "777", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.747] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:53Z", "value" => "WIFI"} [2026-06-17 11:03:43.781] [DEBUG] QUERY OK db=33.2ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "WIFI", "network_type", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307292, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.781] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:53Z", "value" => "true"} [2026-06-17 11:03:43.807] [DEBUG] QUERY OK db=25.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "true", "kiosk_active", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307293, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.807] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:53Z", "value" => ""} [2026-06-17 11:03:43.831] [DEBUG] QUERY OK db=23.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:53Z", "sim_operator", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307294, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.831] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"} [2026-06-17 11:03:43.856] [DEBUG] QUERY OK db=23.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "UNKNOWN", "sim_number", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307295, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.858] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"} [2026-06-17 11:03:43.957] [DEBUG] QUERY OK db=95.0ms queue=0.1ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "UNKNOWN", "sim_iccid", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307296, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.957] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"} [2026-06-17 11:03:43.969] [DEBUG] QUERY OK db=11.9ms idle=101.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "UNKNOWN", "sim_imsi", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307297, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.970] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"} [2026-06-17 11:03:43.994] [DEBUG] QUERY OK db=23.8ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "UNKNOWN", "sim_iccid2", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:43.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307298, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:43.995] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:53Z", "value" => "UNKNOWN"} [2026-06-17 11:03:44.030] [DEBUG] QUERY OK db=33.0ms queue=0.5ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "UNKNOWN", "sim_imsi2", 39329, ~N[2026-06-17 11:03:43], ~N[2026-06-17 11:03:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:44.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307299, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:43], updated_at: ~N[2026-06-17 11:03:43]}} [2026-06-17 11:03:44.030] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:53Z", "value" => "7"} [2026-06-17 11:03:44.055] [DEBUG] QUERY OK db=23.7ms queue=0.2ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "7", "data_usage_mb", 39329, ~N[2026-06-17 11:03:44], ~N[2026-06-17 11:03:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:44.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307300, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:44], updated_at: ~N[2026-06-17 11:03:44]}} [2026-06-17 11:03:44.056] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:53Z", "value" => "0"} [2026-06-17 11:03:44.073] [DEBUG] QUERY OK db=14.8ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "0", "mobile_data_mb", 39329, ~N[2026-06-17 11:03:44], ~N[2026-06-17 11:03:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:44.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307301, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:44], updated_at: ~N[2026-06-17 11:03:44]}} [2026-06-17 11:03:44.074] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:44.094] [DEBUG] QUERY OK db=19.2ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39329, ~N[2026-06-17 11:03:44], ~N[2026-06-17 11:03:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:44.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307302, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:53Z", message: nil, status_log_id: 39329, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:44], updated_at: ~N[2026-06-17 11:03:44]}} [2026-06-17 11:03:45.447] [INFO ] Received status update for terminal 61250424798001 [2026-06-17 11:03:45.447] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-06-17T15:03:44Z","org.device":[{"itemkey":"battery","value":24,"timestamp":"2026-06-17T15:03:44Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-06-17T15:03:44Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-06-17T15:03:44Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-06-17T15:03:44Z","message":""}]} [2026-06-17 11:03:45.447] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-06-17T15:03:44Z", "value" => 24}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-06-17T15:03:44Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-06-17T15:03:44Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-06-17T15:03:44Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-06-17T15:03:44Z"} [2026-06-17 11:03:45.448] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:45.457] [DEBUG] QUERY OK source="tms_terminals" db=8.6ms queue=0.1ms idle=835.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` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:45.461] [INFO ] Terminal updated: 61250424798001 [2026-06-17 11:03:45.481] [DEBUG] QUERY OK source="tms_terminals" db=19.1ms idle=358.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:45], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:45.483] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=25.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` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:45.499] [DEBUG] QUERY OK source="tms_terminals" db=15.0ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:45], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:45.514] [DEBUG] QUERY OK db=14.4ms idle=15.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-06-17T15:03:44Z", ~N[2026-06-17 11:03:45], ~N[2026-06-17 11:03:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:45.514] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39330, oid: "org-id-placeholder", upload_time: "2026-06-17T15:03:44Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:45], updated_at: ~N[2026-06-17 11:03:45]} [2026-06-17 11:03:45.514] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-06-17T15:03:44Z", "value" => 24} [2026-06-17 11:03:45.551] [DEBUG] QUERY OK db=35.1ms queue=1.0ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:03:44Z", "24", "battery", 39330, ~N[2026-06-17 11:03:45], ~N[2026-06-17 11:03:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:45.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307303, itemkey: "battery", value: "24", timestamp: "2026-06-17T15:03:44Z", message: nil, status_log_id: 39330, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:45], updated_at: ~N[2026-06-17 11:03:45]}} [2026-06-17 11:03:45.552] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-06-17T15:03:44Z", "value" => 50} [2026-06-17 11:03:45.578] [DEBUG] QUERY OK db=26.2ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-06-17T15:03:44Z", "50", "memory", 39330, ~N[2026-06-17 11:03:45], ~N[2026-06-17 11:03:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:45.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307304, itemkey: "memory", value: "50", timestamp: "2026-06-17T15:03:44Z", message: "Normal", status_log_id: 39330, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:45], updated_at: ~N[2026-06-17 11:03:45]}} [2026-06-17 11:03:45.579] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-06-17T15:03:44Z", "value" => 50} [2026-06-17 11:03:45.594] [DEBUG] QUERY OK db=14.0ms queue=0.2ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:03:44Z", "50", "cpu", 39330, ~N[2026-06-17 11:03:45], ~N[2026-06-17 11:03:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:45.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307305, itemkey: "cpu", value: "50", timestamp: "2026-06-17T15:03:44Z", message: nil, status_log_id: 39330, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:45], updated_at: ~N[2026-06-17 11:03:45]}} [2026-06-17 11:03:45.594] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-06-17T15:03:44Z", "value" => "online"} [2026-06-17 11:03:45.606] [DEBUG] QUERY OK db=11.7ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:03:44Z", "online", "network", 39330, ~N[2026-06-17 11:03:45], ~N[2026-06-17 11:03:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:45.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307306, itemkey: "network", value: "online", timestamp: "2026-06-17T15:03:44Z", message: nil, status_log_id: 39330, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:45], updated_at: ~N[2026-06-17 11:03:45]}} [2026-06-17 11:03:45.607] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-06-17 11:03:49.354] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:49.354] [INFO ] Incoming JSON payload: {"oid":"7ded60e1-cb49-49cf-ba2a-fb22c7231288","sn":"98251226730002","uploadTime":"2026-06-17T11:02:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"ram_free_mb","value":"771","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:02:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:02:59Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:49.355] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7ded60e1-cb49-49cf-ba2a-fb22c7231288", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:59Z", "value" => "771"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:59Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:02:59Z", "vendor" => "morefun"} [2026-06-17 11:03:49.356] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:49.356] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:49.356] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:49.360] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=725.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-06-17 11:03:49.363] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=1.4ms idle=243.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-06-17 11:03:49.363] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:49.369] [DEBUG] QUERY OK source="tms_terminals" db=5.9ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:49.374] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:49.398] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=11.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:49.398] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:49.403] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=3.5ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:49.424] [DEBUG] QUERY OK source="tms_terminals" db=20.3ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:49.439] [DEBUG] QUERY OK db=14.9ms idle=21.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "7ded60e1-cb49-49cf-ba2a-fb22c7231288", "2026-06-17T11:02:59Z", ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:49.440] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39331, oid: "7ded60e1-cb49-49cf-ba2a-fb22c7231288", upload_time: "2026-06-17T11:02:59Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]} [2026-06-17 11:03:49.440] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:02:59Z", "value" => "morefun"} [2026-06-17 11:03:49.457] [DEBUG] QUERY OK db=16.7ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "morefun", "vendor", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307307, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.458] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:02:59Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:49.493] [DEBUG] QUERY OK db=34.7ms queue=0.1ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "kiosk_launcher", "model", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307308, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.493] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:02:59Z", "value" => "1.0"} [2026-06-17 11:03:49.516] [DEBUG] QUERY OK db=22.2ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "1.0", "app_version", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307309, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.516] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:02:59Z", "value" => "13"} [2026-06-17 11:03:49.532] [DEBUG] QUERY OK db=12.3ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "13", "android_version", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307310, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.532] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:02:59Z", "value" => "771"} [2026-06-17 11:03:49.556] [DEBUG] QUERY OK db=23.7ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "771", "ram_free_mb", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307311, itemkey: "ram_free_mb", value: "771", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.557] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:02:59Z", "value" => "WIFI"} [2026-06-17 11:03:49.594] [DEBUG] QUERY OK db=31.6ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "WIFI", "network_type", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307312, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.595] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:02:59Z", "value" => "true"} [2026-06-17 11:03:49.620] [DEBUG] QUERY OK db=24.7ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "true", "kiosk_active", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307313, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.624] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:02:59Z", "value" => ""} [2026-06-17 11:03:49.644] [DEBUG] QUERY OK db=19.4ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:02:59Z", "sim_operator", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307314, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.649] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"} [2026-06-17 11:03:49.685] [DEBUG] QUERY OK db=35.6ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "UNKNOWN", "sim_number", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307315, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.690] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"} [2026-06-17 11:03:49.716] [DEBUG] QUERY OK db=25.4ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "UNKNOWN", "sim_iccid", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307316, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.716] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"} [2026-06-17 11:03:49.733] [DEBUG] QUERY OK db=11.5ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "UNKNOWN", "sim_imsi", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307317, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.737] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"} [2026-06-17 11:03:49.753] [DEBUG] QUERY OK db=15.3ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "UNKNOWN", "sim_iccid2", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307318, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.755] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:02:59Z", "value" => "UNKNOWN"} [2026-06-17 11:03:49.789] [DEBUG] QUERY OK db=30.0ms queue=1.2ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "UNKNOWN", "sim_imsi2", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307319, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.789] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:02:59Z", "value" => "7"} [2026-06-17 11:03:49.817] [DEBUG] QUERY OK db=27.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "7", "data_usage_mb", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307320, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.822] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:02:59Z", "value" => "0"} [2026-06-17 11:03:49.838] [DEBUG] QUERY OK db=15.7ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "0", "mobile_data_mb", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307321, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:49.839] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:02:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:49.869] [DEBUG] QUERY OK db=28.8ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:02:59Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39331, ~N[2026-06-17 11:03:49], ~N[2026-06-17 11:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:49.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307322, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:02:59Z", message: nil, status_log_id: 39331, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:49], updated_at: ~N[2026-06-17 11:03:49]}} [2026-06-17 11:03:55.663] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:03:55.664] [INFO ] Incoming JSON payload: {"oid":"860326ec-1dd4-4e92-81fa-0252cf03b6e8","sn":"98251226730002","uploadTime":"2026-06-17T11:03:05Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:05Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03:05Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:03:55.670] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "860326ec-1dd4-4e92-81fa-0252cf03b6e8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:05Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:05Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:05Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:05Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:05Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:05Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:05Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:05Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:05Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:05Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:05Z", "vendor" => "morefun"} [2026-06-17 11:03:55.673] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:03:55.673] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:03:55.676] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:03:55.676] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=531.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-06-17 11:03:55.677] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=342.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-06-17 11:03:55.677] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:03:55.679] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:03:55.679] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:03:55.699] [DEBUG] QUERY OK source="tms_terminals" db=19.5ms queue=0.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:03:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:03:55.699] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:03:55.702] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=22.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:03:55.720] [DEBUG] QUERY OK source="tms_terminals" db=18.2ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:03:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:03:55.749] [DEBUG] QUERY OK db=26.5ms idle=20.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "860326ec-1dd4-4e92-81fa-0252cf03b6e8", "2026-06-17T11:03:05Z", ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:03:55.749] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39332, oid: "860326ec-1dd4-4e92-81fa-0252cf03b6e8", upload_time: "2026-06-17T11:03:05Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]} [2026-06-17 11:03:55.750] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:05Z", "value" => "morefun"} [2026-06-17 11:03:55.775] [DEBUG] QUERY OK db=25.2ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "morefun", "vendor", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307323, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.776] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:05Z", "value" => "kiosk_launcher"} [2026-06-17 11:03:55.805] [DEBUG] QUERY OK db=28.2ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "kiosk_launcher", "model", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307324, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.805] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:05Z", "value" => "1.0"} [2026-06-17 11:03:55.818] [DEBUG] QUERY OK db=12.1ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "1.0", "app_version", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307325, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.819] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:05Z", "value" => "13"} [2026-06-17 11:03:55.841] [DEBUG] QUERY OK db=22.1ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "13", "android_version", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307326, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.841] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:05Z", "value" => "762"} [2026-06-17 11:03:55.876] [DEBUG] QUERY OK db=34.4ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "762", "ram_free_mb", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307327, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.876] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:05Z", "value" => "WIFI"} [2026-06-17 11:03:55.904] [DEBUG] QUERY OK db=25.9ms queue=1.4ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "WIFI", "network_type", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307328, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.905] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:05Z", "value" => "true"} [2026-06-17 11:03:55.925] [DEBUG] QUERY OK db=19.8ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "true", "kiosk_active", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307329, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.925] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:05Z", "value" => ""} [2026-06-17 11:03:55.952] [DEBUG] QUERY OK db=23.3ms queue=2.9ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:05Z", "sim_operator", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307330, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.952] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"} [2026-06-17 11:03:55.977] [DEBUG] QUERY OK db=23.3ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "UNKNOWN", "sim_number", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:55.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307331, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:55.977] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"} [2026-06-17 11:03:56.011] [DEBUG] QUERY OK db=33.7ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "UNKNOWN", "sim_iccid", 39332, ~N[2026-06-17 11:03:55], ~N[2026-06-17 11:03:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:56.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307332, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:55], updated_at: ~N[2026-06-17 11:03:55]}} [2026-06-17 11:03:56.012] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"} [2026-06-17 11:03:56.028] [DEBUG] QUERY OK db=14.8ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "UNKNOWN", "sim_imsi", 39332, ~N[2026-06-17 11:03:56], ~N[2026-06-17 11:03:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:56.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307333, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:56], updated_at: ~N[2026-06-17 11:03:56]}} [2026-06-17 11:03:56.029] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"} [2026-06-17 11:03:56.047] [DEBUG] QUERY OK db=15.2ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "UNKNOWN", "sim_iccid2", 39332, ~N[2026-06-17 11:03:56], ~N[2026-06-17 11:03:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:56.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307334, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:56], updated_at: ~N[2026-06-17 11:03:56]}} [2026-06-17 11:03:56.048] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:05Z", "value" => "UNKNOWN"} [2026-06-17 11:03:56.082] [DEBUG] QUERY OK db=32.8ms queue=0.1ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "UNKNOWN", "sim_imsi2", 39332, ~N[2026-06-17 11:03:56], ~N[2026-06-17 11:03:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:56.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307335, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:56], updated_at: ~N[2026-06-17 11:03:56]}} [2026-06-17 11:03:56.082] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:05Z", "value" => "7"} [2026-06-17 11:03:56.106] [DEBUG] QUERY OK db=23.0ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "7", "data_usage_mb", 39332, ~N[2026-06-17 11:03:56], ~N[2026-06-17 11:03:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:56.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307336, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:56], updated_at: ~N[2026-06-17 11:03:56]}} [2026-06-17 11:03:56.107] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:05Z", "value" => "0"} [2026-06-17 11:03:56.129] [DEBUG] QUERY OK db=20.4ms queue=1.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "0", "mobile_data_mb", 39332, ~N[2026-06-17 11:03:56], ~N[2026-06-17 11:03:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:56.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307337, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:56], updated_at: ~N[2026-06-17 11:03:56]}} [2026-06-17 11:03:56.130] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:03:56.147] [DEBUG] QUERY OK db=16.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:05Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39332, ~N[2026-06-17 11:03:56], ~N[2026-06-17 11:03:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:03:56.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307338, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:05Z", message: nil, status_log_id: 39332, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:03:56], updated_at: ~N[2026-06-17 11:03:56]}} [2026-06-17 11:04:01.741] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:01.741] [INFO ] Incoming JSON payload: {"oid":"894555de-603e-4ae7-abfe-da26674aa852","sn":"98251226730002","uploadTime":"2026-06-17T11:03:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"ram_free_mb","value":"758","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:01.742] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "894555de-603e-4ae7-abfe-da26674aa852", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:11Z", "value" => "758"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:11Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:11Z", "vendor" => "morefun"} [2026-06-17 11:04:01.742] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:01.742] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:01.742] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:01.747] [DEBUG] QUERY OK source="parameter_templates" db=3.6ms queue=0.4ms idle=1315.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-06-17 11:04:01.753] [DEBUG] QUERY OK source="parameter_templates" db=5.5ms queue=0.6ms idle=569.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.`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-06-17 11:04:01.753] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:01.755] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=7.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:01.755] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:01.820] [DEBUG] QUERY OK source="tms_terminals" db=63.5ms queue=0.1ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:01.820] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:01.821] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=65.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:01.842] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:01.877] [DEBUG] QUERY OK db=34.7ms idle=20.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "894555de-603e-4ae7-abfe-da26674aa852", "2026-06-17T11:03:11Z", ~N[2026-06-17 11:04:01], ~N[2026-06-17 11:04:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:01.877] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39333, oid: "894555de-603e-4ae7-abfe-da26674aa852", upload_time: "2026-06-17T11:03:11Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:01], updated_at: ~N[2026-06-17 11:04:01]} [2026-06-17 11:04:01.878] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:11Z", "value" => "morefun"} [2026-06-17 11:04:01.902] [DEBUG] QUERY OK db=24.4ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "morefun", "vendor", 39333, ~N[2026-06-17 11:04:01], ~N[2026-06-17 11:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:01.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307339, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:01], updated_at: ~N[2026-06-17 11:04:01]}} [2026-06-17 11:04:01.903] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:11Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:01.948] [DEBUG] QUERY OK db=44.8ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "kiosk_launcher", "model", 39333, ~N[2026-06-17 11:04:01], ~N[2026-06-17 11:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:01.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307340, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:01], updated_at: ~N[2026-06-17 11:04:01]}} [2026-06-17 11:04:01.948] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:11Z", "value" => "1.0"} [2026-06-17 11:04:01.962] [DEBUG] QUERY OK db=11.7ms queue=1.2ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "1.0", "app_version", 39333, ~N[2026-06-17 11:04:01], ~N[2026-06-17 11:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:01.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307341, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:01], updated_at: ~N[2026-06-17 11:04:01]}} [2026-06-17 11:04:01.962] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:11Z", "value" => "13"} [2026-06-17 11:04:01.995] [DEBUG] QUERY OK db=28.0ms queue=0.8ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "13", "android_version", 39333, ~N[2026-06-17 11:04:01], ~N[2026-06-17 11:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:01.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307342, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:01], updated_at: ~N[2026-06-17 11:04:01]}} [2026-06-17 11:04:01.996] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:11Z", "value" => "758"} [2026-06-17 11:04:02.037] [DEBUG] QUERY OK db=40.8ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "758", "ram_free_mb", 39333, ~N[2026-06-17 11:04:01], ~N[2026-06-17 11:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307343, itemkey: "ram_free_mb", value: "758", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:01], updated_at: ~N[2026-06-17 11:04:01]}} [2026-06-17 11:04:02.038] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:11Z", "value" => "WIFI"} [2026-06-17 11:04:02.069] [DEBUG] QUERY OK db=31.2ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "WIFI", "network_type", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307344, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.069] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:11Z", "value" => "true"} [2026-06-17 11:04:02.100] [DEBUG] QUERY OK db=23.9ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "true", "kiosk_active", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307345, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.101] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:11Z", "value" => ""} [2026-06-17 11:04:02.138] [DEBUG] QUERY OK db=37.1ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:11Z", "sim_operator", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307346, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.140] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"} [2026-06-17 11:04:02.176] [DEBUG] QUERY OK db=35.1ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "UNKNOWN", "sim_number", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307347, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.176] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"} [2026-06-17 11:04:02.199] [DEBUG] QUERY OK db=23.2ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "UNKNOWN", "sim_iccid", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307348, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.200] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"} [2026-06-17 11:04:02.223] [DEBUG] QUERY OK db=13.3ms queue=9.8ms idle=5.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "UNKNOWN", "sim_imsi", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307349, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.224] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"} [2026-06-17 11:04:02.252] [DEBUG] QUERY OK db=27.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "UNKNOWN", "sim_iccid2", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307350, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.253] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:11Z", "value" => "UNKNOWN"} [2026-06-17 11:04:02.292] [DEBUG] QUERY OK db=38.6ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "UNKNOWN", "sim_imsi2", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307351, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.293] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:11Z", "value" => "7"} [2026-06-17 11:04:02.384] [DEBUG] QUERY OK db=90.8ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "7", "data_usage_mb", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307352, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.386] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:11Z", "value" => "0"} [2026-06-17 11:04:02.407] [DEBUG] QUERY OK db=20.0ms idle=94.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:11Z", "0", "mobile_data_mb", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307353, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:02.408] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:02.439] [DEBUG] QUERY OK db=28.7ms queue=1.0ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39333, ~N[2026-06-17 11:04:02], ~N[2026-06-17 11:04:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:02.443] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307354, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:11Z", message: nil, status_log_id: 39333, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:02], updated_at: ~N[2026-06-17 11:04:02]}} [2026-06-17 11:04:08.088] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:08.088] [INFO ] Incoming JSON payload: {"oid":"5c0bb99e-89b1-4088-a4b5-7c5a4fb4cea1","sn":"98251226730002","uploadTime":"2026-06-17T11:03:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"ram_free_mb","value":"758","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03:17Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:08.089] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5c0bb99e-89b1-4088-a4b5-7c5a4fb4cea1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:17Z", "value" => "758"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:17Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:17Z", "vendor" => "morefun"} [2026-06-17 11:04:08.089] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:08.089] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:08.089] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:08.090] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1742.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:04:08.092] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=861.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.`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-06-17 11:04:08.093] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:08.096] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:08.096] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:08.117] [DEBUG] QUERY OK source="tms_terminals" db=16.4ms queue=2.6ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:08.117] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:08.122] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:08.154] [DEBUG] QUERY OK source="tms_terminals" db=30.9ms queue=0.4ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:08.184] [DEBUG] QUERY OK db=29.0ms queue=0.1ms idle=32.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5c0bb99e-89b1-4088-a4b5-7c5a4fb4cea1", "2026-06-17T11:03:17Z", ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:08.184] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39334, oid: "5c0bb99e-89b1-4088-a4b5-7c5a4fb4cea1", upload_time: "2026-06-17T11:03:17Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]} [2026-06-17 11:04:08.184] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:17Z", "value" => "morefun"} [2026-06-17 11:04:08.199] [DEBUG] QUERY OK db=14.4ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "morefun", "vendor", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307355, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.200] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:17Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:08.214] [DEBUG] QUERY OK db=13.9ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "kiosk_launcher", "model", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307356, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.216] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:17Z", "value" => "1.0"} [2026-06-17 11:04:08.239] [DEBUG] QUERY OK db=23.5ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "1.0", "app_version", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307357, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.240] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:17Z", "value" => "13"} [2026-06-17 11:04:08.274] [DEBUG] QUERY OK db=32.5ms idle=8.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "13", "android_version", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.274] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307358, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.275] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:17Z", "value" => "758"} [2026-06-17 11:04:08.296] [DEBUG] QUERY OK db=21.1ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "758", "ram_free_mb", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307359, itemkey: "ram_free_mb", value: "758", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.297] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:17Z", "value" => "WIFI"} [2026-06-17 11:04:08.345] [DEBUG] QUERY OK db=47.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "WIFI", "network_type", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.346] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307360, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.346] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:17Z", "value" => "true"} [2026-06-17 11:04:08.370] [DEBUG] QUERY OK db=24.3ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "true", "kiosk_active", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307361, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.371] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:17Z", "value" => ""} [2026-06-17 11:04:08.409] [DEBUG] QUERY OK db=37.7ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:17Z", "sim_operator", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307362, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.409] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"} [2026-06-17 11:04:08.428] [DEBUG] QUERY OK db=17.6ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "UNKNOWN", "sim_number", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307363, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.428] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"} [2026-06-17 11:04:08.492] [DEBUG] QUERY OK db=63.0ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "UNKNOWN", "sim_iccid", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307364, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.493] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"} [2026-06-17 11:04:08.516] [DEBUG] QUERY OK db=22.0ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "UNKNOWN", "sim_imsi", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307365, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.516] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"} [2026-06-17 11:04:08.534] [DEBUG] QUERY OK db=17.9ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "UNKNOWN", "sim_iccid2", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307366, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.535] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:17Z", "value" => "UNKNOWN"} [2026-06-17 11:04:08.560] [DEBUG] QUERY OK db=24.9ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "UNKNOWN", "sim_imsi2", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307367, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.561] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:17Z", "value" => "7"} [2026-06-17 11:04:08.585] [DEBUG] QUERY OK db=23.1ms queue=0.6ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "7", "data_usage_mb", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307368, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.586] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:17Z", "value" => "0"} [2026-06-17 11:04:08.602] [DEBUG] QUERY OK db=15.7ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "0", "mobile_data_mb", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307369, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.603] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:08.620] [DEBUG] QUERY OK db=15.4ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39334, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307370, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:17Z", message: nil, status_log_id: 39334, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.621] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 11:04:08.622] [INFO ] Incoming JSON payload: {"oid":"863cc110-c7f5-4a40-b4e9-5ad8d00e7eab","sn":"98251226730001","uploadTime":"2026-06-17T19:07:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"ram_free_mb","value":"1007","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T19:07:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T19:07:10Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.reso (truncated) [2026-06-17 11:04:08.623] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "863cc110-c7f5-4a40-b4e9-5ad8d00e7eab", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T19:07:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T19:07:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T19:07:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T19:07:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T19:07:10Z", "value" => "1007"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T19:07:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T19:07:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T19:07:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T19:07:10Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T19:07:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T19:07:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T19:07:10Z", "vendor" => "morefun"} [2026-06-17 11:04:08.623] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:08.623] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 11:04:08.623] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:08.630] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.8ms idle=26.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-06-17 11:04:08.633] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=11.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-06-17 11:04:08.633] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:08.639] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:08.639] [INFO ] Terminal updated: 98251226730001 [2026-06-17 11:04:08.672] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:08.672] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 11:04:08.679] [DEBUG] QUERY OK source="tms_terminals" db=6.4ms idle=35.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:629 [2026-06-17 11:04:08.709] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=10.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:08.721] [DEBUG] QUERY OK db=11.7ms idle=30.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "863cc110-c7f5-4a40-b4e9-5ad8d00e7eab", "2026-06-17T19:07:10Z", ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:08.722] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39335, oid: "863cc110-c7f5-4a40-b4e9-5ad8d00e7eab", upload_time: "2026-06-17T19:07:10Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]} [2026-06-17 11:04:08.722] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T19:07:10Z", "value" => "morefun"} [2026-06-17 11:04:08.741] [DEBUG] QUERY OK db=18.9ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "morefun", "vendor", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307371, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.742] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T19:07:10Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:08.773] [DEBUG] QUERY OK db=31.2ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "kiosk_launcher", "model", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307372, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.774] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T19:07:10Z", "value" => "1.0"} [2026-06-17 11:04:08.799] [DEBUG] QUERY OK db=23.5ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "1.0", "app_version", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307373, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.799] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T19:07:10Z", "value" => "13"} [2026-06-17 11:04:08.824] [DEBUG] QUERY OK db=20.5ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "13", "android_version", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307374, itemkey: "android_version", value: "13", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.824] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T19:07:10Z", "value" => "1007"} [2026-06-17 11:04:08.849] [DEBUG] QUERY OK db=22.4ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "1007", "ram_free_mb", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307375, itemkey: "ram_free_mb", value: "1007", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.849] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T19:07:10Z", "value" => "WIFI"} [2026-06-17 11:04:08.884] [DEBUG] QUERY OK db=34.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "WIFI", "network_type", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307376, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.884] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T19:07:10Z", "value" => "true"} [2026-06-17 11:04:08.908] [DEBUG] QUERY OK db=23.8ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "true", "kiosk_active", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307377, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.909] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T19:07:10Z", "value" => ""} [2026-06-17 11:04:08.924] [DEBUG] QUERY OK db=14.8ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T19:07:10Z", "sim_operator", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307378, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.933] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:04:08.961] [DEBUG] QUERY OK db=27.7ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "UNKNOWN", "sim_number", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307379, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.962] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:04:08.994] [DEBUG] QUERY OK db=32.3ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "UNKNOWN", "sim_iccid", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:08.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307380, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:08.995] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:04:09.031] [DEBUG] QUERY OK db=34.4ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "UNKNOWN", "sim_imsi", 39335, ~N[2026-06-17 11:04:08], ~N[2026-06-17 11:04:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:09.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307381, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:08], updated_at: ~N[2026-06-17 11:04:08]}} [2026-06-17 11:04:09.032] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:04:09.043] [DEBUG] QUERY OK db=11.3ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "UNKNOWN", "sim_iccid2", 39335, ~N[2026-06-17 11:04:09], ~N[2026-06-17 11:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:09.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307382, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:09], updated_at: ~N[2026-06-17 11:04:09]}} [2026-06-17 11:04:09.044] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T19:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:04:09.067] [DEBUG] QUERY OK db=22.8ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "UNKNOWN", "sim_imsi2", 39335, ~N[2026-06-17 11:04:09], ~N[2026-06-17 11:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:09.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307383, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:09], updated_at: ~N[2026-06-17 11:04:09]}} [2026-06-17 11:04:09.074] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T19:07:10Z", "value" => "6"} [2026-06-17 11:04:09.100] [DEBUG] QUERY OK db=25.3ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "6", "data_usage_mb", 39335, ~N[2026-06-17 11:04:09], ~N[2026-06-17 11:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:09.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307384, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:09], updated_at: ~N[2026-06-17 11:04:09]}} [2026-06-17 11:04:09.100] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T19:07:10Z", "value" => "0"} [2026-06-17 11:04:09.126] [DEBUG] QUERY OK db=25.9ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "0", "mobile_data_mb", 39335, ~N[2026-06-17 11:04:09], ~N[2026-06-17 11:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:09.131] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307385, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:09], updated_at: ~N[2026-06-17 11:04:09]}} [2026-06-17 11:04:09.132] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T19:07:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 11:04:09.162] [DEBUG] QUERY OK db=19.5ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T19:07:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39335, ~N[2026-06-17 11:04:09], ~N[2026-06-17 11:04:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:09.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307386, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T19:07:10Z", message: nil, status_log_id: 39335, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:09], updated_at: ~N[2026-06-17 11:04:09]}} [2026-06-17 11:04:14.319] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:14.319] [INFO ] Incoming JSON payload: {"oid":"2870eefc-07b9-4237-ae45-e7037d8c21da","sn":"98251226730002","uploadTime":"2026-06-17T11:03:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"ram_free_mb","value":"755","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03:23Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:14.322] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2870eefc-07b9-4237-ae45-e7037d8c21da", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:23Z", "value" => "755"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:23Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:23Z", "vendor" => "morefun"} [2026-06-17 11:04:14.322] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:14.322] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:14.322] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:14.324] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1064.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-06-17 11:04:14.325] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=63.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.`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-06-17 11:04:14.325] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:14.326] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:14.326] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:14.361] [DEBUG] QUERY OK source="tms_terminals" db=28.8ms queue=3.3ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:14.362] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:14.364] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=36.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:14.398] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms idle=10.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:14.430] [DEBUG] QUERY OK db=31.5ms idle=34.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "2870eefc-07b9-4237-ae45-e7037d8c21da", "2026-06-17T11:03:23Z", ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:14.430] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39336, oid: "2870eefc-07b9-4237-ae45-e7037d8c21da", upload_time: "2026-06-17T11:03:23Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]} [2026-06-17 11:04:14.430] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:23Z", "value" => "morefun"} [2026-06-17 11:04:14.452] [DEBUG] QUERY OK db=20.2ms queue=0.3ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "morefun", "vendor", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307387, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.453] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:23Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:14.488] [DEBUG] QUERY OK db=32.6ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "kiosk_launcher", "model", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307388, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.489] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:23Z", "value" => "1.0"} [2026-06-17 11:04:14.522] [DEBUG] QUERY OK db=31.3ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "1.0", "app_version", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307389, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.523] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:23Z", "value" => "13"} [2026-06-17 11:04:14.546] [DEBUG] QUERY OK db=23.2ms queue=0.1ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "13", "android_version", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307390, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.547] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:23Z", "value" => "755"} [2026-06-17 11:04:14.569] [DEBUG] QUERY OK db=21.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "755", "ram_free_mb", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307391, itemkey: "ram_free_mb", value: "755", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.569] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:23Z", "value" => "WIFI"} [2026-06-17 11:04:14.607] [DEBUG] QUERY OK db=34.6ms queue=0.5ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "WIFI", "network_type", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307392, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.607] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:23Z", "value" => "true"} [2026-06-17 11:04:14.639] [DEBUG] QUERY OK db=31.3ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "true", "kiosk_active", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307393, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.640] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:23Z", "value" => ""} [2026-06-17 11:04:14.663] [DEBUG] QUERY OK db=22.8ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:23Z", "sim_operator", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307394, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.667] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"} [2026-06-17 11:04:14.694] [DEBUG] QUERY OK db=26.8ms idle=4.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "UNKNOWN", "sim_number", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307395, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.695] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"} [2026-06-17 11:04:14.718] [DEBUG] QUERY OK db=22.8ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "UNKNOWN", "sim_iccid", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307396, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.718] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"} [2026-06-17 11:04:14.748] [DEBUG] QUERY OK db=29.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "UNKNOWN", "sim_imsi", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307397, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.748] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"} [2026-06-17 11:04:14.780] [DEBUG] QUERY OK db=31.6ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "UNKNOWN", "sim_iccid2", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.782] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307398, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.783] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:23Z", "value" => "UNKNOWN"} [2026-06-17 11:04:14.805] [DEBUG] QUERY OK db=22.5ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "UNKNOWN", "sim_imsi2", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307399, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.807] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:23Z", "value" => "7"} [2026-06-17 11:04:14.837] [DEBUG] QUERY OK db=29.7ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "7", "data_usage_mb", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307400, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.839] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:23Z", "value" => "0"} [2026-06-17 11:04:14.863] [DEBUG] QUERY OK db=23.0ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "0", "mobile_data_mb", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307401, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:14.865] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:14.897] [DEBUG] QUERY OK db=31.1ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39336, ~N[2026-06-17 11:04:14], ~N[2026-06-17 11:04:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:14.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307402, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:23Z", message: nil, status_log_id: 39336, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:14], updated_at: ~N[2026-06-17 11:04:14]}} [2026-06-17 11:04:20.164] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:20.164] [INFO ] Incoming JSON payload: {"oid":"cab6c7c0-e10b-4caa-bd4c-6c9f75fe355e","sn":"98251226730002","uploadTime":"2026-06-17T11:03:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"ram_free_mb","value":"756","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03:29Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:20.165] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cab6c7c0-e10b-4caa-bd4c-6c9f75fe355e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:29Z", "value" => "756"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:29Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:29Z", "vendor" => "morefun"} [2026-06-17 11:04:20.165] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:20.165] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:20.165] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:20.169] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms idle=1817.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-06-17 11:04:20.171] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=0.9ms idle=898.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-06-17 11:04:20.171] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:20.174] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:20.174] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:20.209] [DEBUG] QUERY OK source="tms_terminals" db=34.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:20.209] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:20.211] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.4ms idle=35.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:20.240] [DEBUG] QUERY OK source="tms_terminals" db=28.5ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:20.274] [DEBUG] QUERY OK db=33.0ms queue=0.5ms idle=29.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "cab6c7c0-e10b-4caa-bd4c-6c9f75fe355e", "2026-06-17T11:03:29Z", ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:20.275] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39337, oid: "cab6c7c0-e10b-4caa-bd4c-6c9f75fe355e", upload_time: "2026-06-17T11:03:29Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]} [2026-06-17 11:04:20.275] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:29Z", "value" => "morefun"} [2026-06-17 11:04:20.304] [DEBUG] QUERY OK db=27.4ms queue=0.1ms idle=1.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "morefun", "vendor", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307403, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.308] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:29Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:20.340] [DEBUG] QUERY OK db=30.9ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "kiosk_launcher", "model", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307404, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.340] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:29Z", "value" => "1.0"} [2026-06-17 11:04:20.363] [DEBUG] QUERY OK db=22.3ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "1.0", "app_version", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307405, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.363] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:29Z", "value" => "13"} [2026-06-17 11:04:20.396] [DEBUG] QUERY OK db=32.8ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "13", "android_version", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307406, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.397] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:29Z", "value" => "756"} [2026-06-17 11:04:20.419] [DEBUG] QUERY OK db=20.2ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "756", "ram_free_mb", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307407, itemkey: "ram_free_mb", value: "756", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.419] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:29Z", "value" => "WIFI"} [2026-06-17 11:04:20.452] [DEBUG] QUERY OK db=31.0ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "WIFI", "network_type", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307408, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.453] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:29Z", "value" => "true"} [2026-06-17 11:04:20.479] [DEBUG] QUERY OK db=23.0ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "true", "kiosk_active", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307409, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.479] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:29Z", "value" => ""} [2026-06-17 11:04:20.504] [DEBUG] QUERY OK db=24.4ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:29Z", "sim_operator", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307410, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.504] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"} [2026-06-17 11:04:20.535] [DEBUG] QUERY OK db=30.6ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "UNKNOWN", "sim_number", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307411, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.536] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"} [2026-06-17 11:04:20.563] [DEBUG] QUERY OK db=27.3ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "UNKNOWN", "sim_iccid", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307412, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.567] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"} [2026-06-17 11:04:20.597] [DEBUG] QUERY OK db=29.0ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "UNKNOWN", "sim_imsi", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307413, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.597] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"} [2026-06-17 11:04:20.621] [DEBUG] QUERY OK db=23.0ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "UNKNOWN", "sim_iccid2", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307414, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.621] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:29Z", "value" => "UNKNOWN"} [2026-06-17 11:04:20.645] [DEBUG] QUERY OK db=23.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "UNKNOWN", "sim_imsi2", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307415, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.645] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:29Z", "value" => "7"} [2026-06-17 11:04:20.666] [DEBUG] QUERY OK db=20.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "7", "data_usage_mb", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307416, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.666] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:29Z", "value" => "0"} [2026-06-17 11:04:20.699] [DEBUG] QUERY OK db=32.7ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "0", "mobile_data_mb", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307417, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:20.700] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:20.731] [DEBUG] QUERY OK db=30.0ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39337, ~N[2026-06-17 11:04:20], ~N[2026-06-17 11:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:20.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307418, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:29Z", message: nil, status_log_id: 39337, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:20], updated_at: ~N[2026-06-17 11:04:20]}} [2026-06-17 11:04:26.247] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:26.247] [INFO ] Incoming JSON payload: {"oid":"0b74e3c5-b925-486e-a3c3-f3df2c3af5a2","sn":"98251226730002","uploadTime":"2026-06-17T11:03:36Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"ram_free_mb","value":"756","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:36Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03:36Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:26.249] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0b74e3c5-b925-486e-a3c3-f3df2c3af5a2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:36Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:36Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:36Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:36Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:36Z", "value" => "756"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:36Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:36Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:36Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:36Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:36Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:36Z", "vendor" => "morefun"} [2026-06-17 11:04:26.249] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:26.249] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:26.249] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:26.251] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=1901.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-06-17 11:04:26.254] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=962.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.`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-06-17 11:04:26.254] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:26.255] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:26.255] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:26.300] [DEBUG] QUERY OK source="tms_terminals" db=44.8ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:26.300] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:26.302] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:26.332] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:26], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:26.355] [DEBUG] QUERY OK db=22.4ms idle=30.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0b74e3c5-b925-486e-a3c3-f3df2c3af5a2", "2026-06-17T11:03:36Z", ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:26.355] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39338, oid: "0b74e3c5-b925-486e-a3c3-f3df2c3af5a2", upload_time: "2026-06-17T11:03:36Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]} [2026-06-17 11:04:26.355] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:36Z", "value" => "morefun"} [2026-06-17 11:04:26.380] [DEBUG] QUERY OK db=24.0ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "morefun", "vendor", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307419, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.380] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:36Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:26.413] [DEBUG] QUERY OK db=32.6ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "kiosk_launcher", "model", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307420, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.413] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:36Z", "value" => "1.0"} [2026-06-17 11:04:26.438] [DEBUG] QUERY OK db=24.7ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "1.0", "app_version", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307421, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.439] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:36Z", "value" => "13"} [2026-06-17 11:04:26.472] [DEBUG] QUERY OK db=33.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "13", "android_version", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307422, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.473] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:36Z", "value" => "756"} [2026-06-17 11:04:26.496] [DEBUG] QUERY OK db=22.7ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "756", "ram_free_mb", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307423, itemkey: "ram_free_mb", value: "756", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.497] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:36Z", "value" => "WIFI"} [2026-06-17 11:04:26.531] [DEBUG] QUERY OK db=34.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "WIFI", "network_type", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307424, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.531] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:36Z", "value" => "true"} [2026-06-17 11:04:26.556] [DEBUG] QUERY OK db=24.4ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "true", "kiosk_active", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307425, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.556] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:36Z", "value" => ""} [2026-06-17 11:04:26.590] [DEBUG] QUERY OK db=33.3ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:36Z", "sim_operator", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307426, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.591] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"} [2026-06-17 11:04:26.622] [DEBUG] QUERY OK db=30.6ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "UNKNOWN", "sim_number", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307427, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.622] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"} [2026-06-17 11:04:26.645] [DEBUG] QUERY OK db=22.7ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "UNKNOWN", "sim_iccid", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307428, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.645] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"} [2026-06-17 11:04:26.669] [DEBUG] QUERY OK db=22.8ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "UNKNOWN", "sim_imsi", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307429, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.669] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"} [2026-06-17 11:04:26.703] [DEBUG] QUERY OK db=33.6ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "UNKNOWN", "sim_iccid2", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307430, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.703] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:36Z", "value" => "UNKNOWN"} [2026-06-17 11:04:26.726] [DEBUG] QUERY OK db=22.3ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "UNKNOWN", "sim_imsi2", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307431, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.726] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:36Z", "value" => "7"} [2026-06-17 11:04:26.749] [DEBUG] QUERY OK db=22.4ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "7", "data_usage_mb", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307432, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.749] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:36Z", "value" => "0"} [2026-06-17 11:04:26.773] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "0", "mobile_data_mb", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307433, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:26.777] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:26.809] [DEBUG] QUERY OK db=31.8ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:36Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39338, ~N[2026-06-17 11:04:26], ~N[2026-06-17 11:04:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:26.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307434, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:36Z", message: nil, status_log_id: 39338, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:26], updated_at: ~N[2026-06-17 11:04:26]}} [2026-06-17 11:04:32.331] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:32.331] [INFO ] Incoming JSON payload: {"oid":"97d66ecb-e4ff-43ea-9e17-62e02228220f","sn":"98251226730002","uploadTime":"2026-06-17T11:03:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"ram_free_mb","value":"754","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03:42Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:32.334] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "97d66ecb-e4ff-43ea-9e17-62e02228220f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:42Z", "value" => "754"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:42Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:42Z", "vendor" => "morefun"} [2026-06-17 11:04:32.334] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:32.334] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:32.334] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:32.337] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=0.2ms idle=981.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-06-17 11:04:32.337] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=27.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.`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-06-17 11:04:32.338] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:32.339] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:32.339] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:32.355] [DEBUG] QUERY OK source="tms_terminals" db=15.1ms queue=0.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:32], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:32.355] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:32.356] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=16.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:32.392] [DEBUG] QUERY OK source="tms_terminals" db=34.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:32], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:32.424] [DEBUG] QUERY OK db=32.0ms queue=0.1ms idle=35.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "97d66ecb-e4ff-43ea-9e17-62e02228220f", "2026-06-17T11:03:42Z", ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:32.424] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39339, oid: "97d66ecb-e4ff-43ea-9e17-62e02228220f", upload_time: "2026-06-17T11:03:42Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]} [2026-06-17 11:04:32.424] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:42Z", "value" => "morefun"} [2026-06-17 11:04:32.451] [DEBUG] QUERY OK db=25.6ms queue=0.1ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "morefun", "vendor", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307435, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.451] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:42Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:32.469] [DEBUG] QUERY OK db=17.9ms queue=0.1ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "kiosk_launcher", "model", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307436, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.470] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:42Z", "value" => "1.0"} [2026-06-17 11:04:32.500] [DEBUG] QUERY OK db=29.1ms queue=0.4ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "1.0", "app_version", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307437, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.500] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:42Z", "value" => "13"} [2026-06-17 11:04:32.534] [DEBUG] QUERY OK db=33.4ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "13", "android_version", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307438, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.535] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:42Z", "value" => "754"} [2026-06-17 11:04:32.562] [DEBUG] QUERY OK db=26.6ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "754", "ram_free_mb", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307439, itemkey: "ram_free_mb", value: "754", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.563] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:42Z", "value" => "WIFI"} [2026-06-17 11:04:32.580] [DEBUG] QUERY OK db=17.1ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "WIFI", "network_type", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307440, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.581] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:42Z", "value" => "true"} [2026-06-17 11:04:32.602] [DEBUG] QUERY OK db=20.6ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "true", "kiosk_active", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307441, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.603] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:42Z", "value" => ""} [2026-06-17 11:04:32.631] [DEBUG] QUERY OK db=27.4ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:42Z", "sim_operator", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307442, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.631] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"} [2026-06-17 11:04:32.660] [DEBUG] QUERY OK db=28.2ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "UNKNOWN", "sim_number", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307443, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.660] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"} [2026-06-17 11:04:32.692] [DEBUG] QUERY OK db=31.5ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "UNKNOWN", "sim_iccid", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307444, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.693] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"} [2026-06-17 11:04:32.718] [DEBUG] QUERY OK db=24.5ms queue=0.1ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "UNKNOWN", "sim_imsi", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307445, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.718] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"} [2026-06-17 11:04:32.742] [DEBUG] QUERY OK db=23.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "UNKNOWN", "sim_iccid2", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307446, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.742] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:42Z", "value" => "UNKNOWN"} [2026-06-17 11:04:32.766] [DEBUG] QUERY OK db=23.6ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "UNKNOWN", "sim_imsi2", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307447, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.767] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:42Z", "value" => "7"} [2026-06-17 11:04:32.800] [DEBUG] QUERY OK db=32.7ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "7", "data_usage_mb", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307448, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.801] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:42Z", "value" => "0"} [2026-06-17 11:04:32.820] [DEBUG] QUERY OK db=19.0ms queue=0.1ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "0", "mobile_data_mb", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307449, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:32.821] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:32.854] [DEBUG] QUERY OK db=32.1ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:42Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39339, ~N[2026-06-17 11:04:32], ~N[2026-06-17 11:04:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:32.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307450, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:42Z", message: nil, status_log_id: 39339, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:32], updated_at: ~N[2026-06-17 11:04:32]}} [2026-06-17 11:04:38.676] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:38.676] [INFO ] Incoming JSON payload: {"oid":"0066f649-a108-415f-bfd1-d5e244ecef9e","sn":"98251226730002","uploadTime":"2026-06-17T11:03:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"ram_free_mb","value":"755","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03:48Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:38.679] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0066f649-a108-415f-bfd1-d5e244ecef9e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:48Z", "value" => "755"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:48Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:48Z", "vendor" => "morefun"} [2026-06-17 11:04:38.679] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:38.679] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:38.679] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:38.681] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=355.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-06-17 11:04:38.682] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=327.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-06-17 11:04:38.683] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:38.685] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.7ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:38.687] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:38.711] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms queue=0.2ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:38.711] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:38.712] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:38.734] [DEBUG] QUERY OK source="tms_terminals" db=21.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:38.758] [DEBUG] QUERY OK db=23.3ms idle=22.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0066f649-a108-415f-bfd1-d5e244ecef9e", "2026-06-17T11:03:48Z", ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:38.758] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39340, oid: "0066f649-a108-415f-bfd1-d5e244ecef9e", upload_time: "2026-06-17T11:03:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]} [2026-06-17 11:04:38.758] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:48Z", "value" => "morefun"} [2026-06-17 11:04:38.789] [DEBUG] QUERY OK db=29.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "morefun", "vendor", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307451, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.789] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:48Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:38.806] [DEBUG] QUERY OK db=16.6ms decode=0.1ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "kiosk_launcher", "model", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307452, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.807] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:48Z", "value" => "1.0"} [2026-06-17 11:04:38.824] [DEBUG] QUERY OK db=16.7ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "1.0", "app_version", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307453, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.825] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:48Z", "value" => "13"} [2026-06-17 11:04:38.842] [DEBUG] QUERY OK db=17.4ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "13", "android_version", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307454, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.844] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:48Z", "value" => "755"} [2026-06-17 11:04:38.872] [DEBUG] QUERY OK db=27.7ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "755", "ram_free_mb", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307455, itemkey: "ram_free_mb", value: "755", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.873] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:48Z", "value" => "WIFI"} [2026-06-17 11:04:38.912] [DEBUG] QUERY OK db=38.6ms queue=0.2ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "WIFI", "network_type", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307456, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.913] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:48Z", "value" => "true"} [2026-06-17 11:04:38.926] [DEBUG] QUERY OK db=12.9ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "true", "kiosk_active", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307457, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.926] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:48Z", "value" => ""} [2026-06-17 11:04:38.940] [DEBUG] QUERY OK db=13.3ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:48Z", "sim_operator", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307458, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.940] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"} [2026-06-17 11:04:38.961] [DEBUG] QUERY OK db=20.1ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "UNKNOWN", "sim_number", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307459, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.962] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"} [2026-06-17 11:04:38.997] [DEBUG] QUERY OK db=34.2ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "UNKNOWN", "sim_iccid", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:38.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307460, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:38.997] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"} [2026-06-17 11:04:39.020] [DEBUG] QUERY OK db=22.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "UNKNOWN", "sim_imsi", 39340, ~N[2026-06-17 11:04:38], ~N[2026-06-17 11:04:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:39.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307461, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:38], updated_at: ~N[2026-06-17 11:04:38]}} [2026-06-17 11:04:39.020] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"} [2026-06-17 11:04:39.035] [DEBUG] QUERY OK db=14.4ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "UNKNOWN", "sim_iccid2", 39340, ~N[2026-06-17 11:04:39], ~N[2026-06-17 11:04:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:39.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307462, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:39], updated_at: ~N[2026-06-17 11:04:39]}} [2026-06-17 11:04:39.035] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:48Z", "value" => "UNKNOWN"} [2026-06-17 11:04:39.069] [DEBUG] QUERY OK db=32.3ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "UNKNOWN", "sim_imsi2", 39340, ~N[2026-06-17 11:04:39], ~N[2026-06-17 11:04:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:39.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307463, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:39], updated_at: ~N[2026-06-17 11:04:39]}} [2026-06-17 11:04:39.069] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:48Z", "value" => "7"} [2026-06-17 11:04:39.104] [DEBUG] QUERY OK db=32.3ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "7", "data_usage_mb", 39340, ~N[2026-06-17 11:04:39], ~N[2026-06-17 11:04:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:39.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307464, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:39], updated_at: ~N[2026-06-17 11:04:39]}} [2026-06-17 11:04:39.104] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:48Z", "value" => "0"} [2026-06-17 11:04:39.127] [DEBUG] QUERY OK db=23.0ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "0", "mobile_data_mb", 39340, ~N[2026-06-17 11:04:39], ~N[2026-06-17 11:04:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:39.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307465, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:39], updated_at: ~N[2026-06-17 11:04:39]}} [2026-06-17 11:04:39.128] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:39.147] [DEBUG] QUERY OK db=17.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39340, ~N[2026-06-17 11:04:39], ~N[2026-06-17 11:04:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:39.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307466, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:48Z", message: nil, status_log_id: 39340, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:39], updated_at: ~N[2026-06-17 11:04:39]}} [2026-06-17 11:04:44.839] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:44.840] [INFO ] Incoming JSON payload: {"oid":"9bfaca57-3776-48f9-b133-ddd4a1481b60","sn":"98251226730002","uploadTime":"2026-06-17T11:03:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"ram_free_mb","value":"751","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:03:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:03:54Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:44.841] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9bfaca57-3776-48f9-b133-ddd4a1481b60", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:54Z", "value" => "751"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:54Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:03:54Z", "vendor" => "morefun"} [2026-06-17 11:04:44.841] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:44.841] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:44.841] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:44.842] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=370.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:04:44.843] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=135.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-06-17 11:04:44.843] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:44.846] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:44.846] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:44.872] [DEBUG] QUERY OK source="tms_terminals" db=26.2ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:44], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:44.873] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:44.875] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:44.909] [DEBUG] QUERY OK source="tms_terminals" db=33.9ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:44], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:44.942] [DEBUG] QUERY OK db=32.4ms idle=34.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "9bfaca57-3776-48f9-b133-ddd4a1481b60", "2026-06-17T11:03:54Z", ~N[2026-06-17 11:04:44], ~N[2026-06-17 11:04:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:44.943] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39341, oid: "9bfaca57-3776-48f9-b133-ddd4a1481b60", upload_time: "2026-06-17T11:03:54Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:44], updated_at: ~N[2026-06-17 11:04:44]} [2026-06-17 11:04:44.943] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:03:54Z", "value" => "morefun"} [2026-06-17 11:04:44.971] [DEBUG] QUERY OK db=27.3ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "morefun", "vendor", 39341, ~N[2026-06-17 11:04:44], ~N[2026-06-17 11:04:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:44.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307467, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:44], updated_at: ~N[2026-06-17 11:04:44]}} [2026-06-17 11:04:44.972] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:03:54Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:45.006] [DEBUG] QUERY OK db=34.2ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "kiosk_launcher", "model", 39341, ~N[2026-06-17 11:04:44], ~N[2026-06-17 11:04:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307468, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:44], updated_at: ~N[2026-06-17 11:04:44]}} [2026-06-17 11:04:45.008] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:03:54Z", "value" => "1.0"} [2026-06-17 11:04:45.028] [DEBUG] QUERY OK db=18.3ms queue=0.1ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "1.0", "app_version", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.029] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307469, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.029] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:03:54Z", "value" => "13"} [2026-06-17 11:04:45.054] [DEBUG] QUERY OK db=24.2ms queue=0.2ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "13", "android_version", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307470, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.054] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:03:54Z", "value" => "751"} [2026-06-17 11:04:45.079] [DEBUG] QUERY OK db=24.9ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "751", "ram_free_mb", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307471, itemkey: "ram_free_mb", value: "751", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.081] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:03:54Z", "value" => "WIFI"} [2026-06-17 11:04:45.104] [DEBUG] QUERY OK db=21.2ms queue=0.1ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "WIFI", "network_type", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307472, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.104] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:03:54Z", "value" => "true"} [2026-06-17 11:04:45.141] [DEBUG] QUERY OK db=35.7ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "true", "kiosk_active", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307473, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.141] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:03:54Z", "value" => ""} [2026-06-17 11:04:45.169] [DEBUG] QUERY OK db=27.0ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:03:54Z", "sim_operator", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307474, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.171] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"} [2026-06-17 11:04:45.205] [DEBUG] QUERY OK db=33.4ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "UNKNOWN", "sim_number", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307475, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.206] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"} [2026-06-17 11:04:45.226] [DEBUG] QUERY OK db=19.9ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "UNKNOWN", "sim_iccid", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307476, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.226] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"} [2026-06-17 11:04:45.240] [DEBUG] QUERY OK db=13.8ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "UNKNOWN", "sim_imsi", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307477, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.241] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"} [2026-06-17 11:04:45.264] [DEBUG] QUERY OK db=23.2ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "UNKNOWN", "sim_iccid2", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307478, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.265] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:03:54Z", "value" => "UNKNOWN"} [2026-06-17 11:04:45.300] [DEBUG] QUERY OK db=35.3ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "UNKNOWN", "sim_imsi2", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307479, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.301] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:03:54Z", "value" => "7"} [2026-06-17 11:04:45.326] [DEBUG] QUERY OK db=24.5ms queue=0.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "7", "data_usage_mb", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307480, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.326] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:03:54Z", "value" => "0"} [2026-06-17 11:04:45.382] [DEBUG] QUERY OK db=55.3ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "0", "mobile_data_mb", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307481, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:45.383] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:03:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:45.421] [DEBUG] QUERY OK db=37.0ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:03:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39341, ~N[2026-06-17 11:04:45], ~N[2026-06-17 11:04:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:45.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307482, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:03:54Z", message: nil, status_log_id: 39341, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:45], updated_at: ~N[2026-06-17 11:04:45]}} [2026-06-17 11:04:50.851] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:50.852] [INFO ] Incoming JSON payload: {"oid":"65c4237f-af1a-42d8-91e2-775d84bdeb6f","sn":"98251226730002","uploadTime":"2026-06-17T11:04:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"ram_free_mb","value":"750","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04:00Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:50.854] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "65c4237f-af1a-42d8-91e2-775d84bdeb6f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:00Z", "value" => "750"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:00Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:00Z", "vendor" => "morefun"} [2026-06-17 11:04:50.854] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:50.854] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:50.854] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:50.855] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=499.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-06-17 11:04:50.856] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=496.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-06-17 11:04:50.856] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:50.857] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:50.857] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:50.881] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:50.882] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:50.883] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:50.913] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:50.939] [DEBUG] QUERY OK db=25.0ms idle=29.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "65c4237f-af1a-42d8-91e2-775d84bdeb6f", "2026-06-17T11:04:00Z", ~N[2026-06-17 11:04:50], ~N[2026-06-17 11:04:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:50.939] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39342, oid: "65c4237f-af1a-42d8-91e2-775d84bdeb6f", upload_time: "2026-06-17T11:04:00Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:50], updated_at: ~N[2026-06-17 11:04:50]} [2026-06-17 11:04:50.939] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:00Z", "value" => "morefun"} [2026-06-17 11:04:50.979] [DEBUG] QUERY OK db=40.2ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "morefun", "vendor", 39342, ~N[2026-06-17 11:04:50], ~N[2026-06-17 11:04:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:50.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307483, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:50], updated_at: ~N[2026-06-17 11:04:50]}} [2026-06-17 11:04:50.980] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:00Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:51.006] [DEBUG] QUERY OK db=26.0ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "kiosk_launcher", "model", 39342, ~N[2026-06-17 11:04:50], ~N[2026-06-17 11:04:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307484, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:50], updated_at: ~N[2026-06-17 11:04:50]}} [2026-06-17 11:04:51.007] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:00Z", "value" => "1.0"} [2026-06-17 11:04:51.027] [DEBUG] QUERY OK db=19.8ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "1.0", "app_version", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307485, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.027] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:00Z", "value" => "13"} [2026-06-17 11:04:51.052] [DEBUG] QUERY OK db=23.3ms queue=1.3ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "13", "android_version", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307486, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.052] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:00Z", "value" => "750"} [2026-06-17 11:04:51.089] [DEBUG] QUERY OK db=34.2ms queue=0.1ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "750", "ram_free_mb", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307487, itemkey: "ram_free_mb", value: "750", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.090] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:00Z", "value" => "WIFI"} [2026-06-17 11:04:51.115] [DEBUG] QUERY OK db=25.3ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "WIFI", "network_type", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307488, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.116] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:00Z", "value" => "true"} [2026-06-17 11:04:51.146] [DEBUG] QUERY OK db=29.6ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "true", "kiosk_active", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307489, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.146] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:00Z", "value" => ""} [2026-06-17 11:04:51.173] [DEBUG] QUERY OK db=26.6ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:00Z", "sim_operator", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307490, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.174] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"} [2026-06-17 11:04:51.198] [DEBUG] QUERY OK db=23.6ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "UNKNOWN", "sim_number", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307491, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.198] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"} [2026-06-17 11:04:51.236] [DEBUG] QUERY OK db=37.8ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "UNKNOWN", "sim_iccid", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307492, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.236] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"} [2026-06-17 11:04:51.265] [DEBUG] QUERY OK db=28.7ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "UNKNOWN", "sim_imsi", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307493, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.266] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"} [2026-06-17 11:04:51.292] [DEBUG] QUERY OK db=25.4ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "UNKNOWN", "sim_iccid2", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307494, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.292] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:00Z", "value" => "UNKNOWN"} [2026-06-17 11:04:51.354] [DEBUG] QUERY OK db=61.8ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "UNKNOWN", "sim_imsi2", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307495, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.355] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:00Z", "value" => "7"} [2026-06-17 11:04:51.410] [DEBUG] QUERY OK db=53.4ms queue=0.6ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "7", "data_usage_mb", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307496, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.410] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:00Z", "value" => "0"} [2026-06-17 11:04:51.478] [DEBUG] QUERY OK db=67.5ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "0", "mobile_data_mb", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307497, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:51.479] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:51.507] [DEBUG] QUERY OK db=27.3ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39342, ~N[2026-06-17 11:04:51], ~N[2026-06-17 11:04:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:51.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307498, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:00Z", message: nil, status_log_id: 39342, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:51], updated_at: ~N[2026-06-17 11:04:51]}} [2026-06-17 11:04:56.776] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:04:56.776] [INFO ] Incoming JSON payload: {"oid":"5de3c1be-ad52-49ba-8e04-66f34841225a","sn":"98251226730002","uploadTime":"2026-06-17T11:04:06Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"ram_free_mb","value":"750","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:06Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04:06Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:04:56.777] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5de3c1be-ad52-49ba-8e04-66f34841225a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:06Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:06Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:06Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:06Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:06Z", "value" => "750"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:06Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:06Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:06Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:06Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:06Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:06Z", "vendor" => "morefun"} [2026-06-17 11:04:56.777] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:04:56.777] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:04:56.777] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:04:56.778] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1405.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:04:56.779] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=403.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-06-17 11:04:56.779] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:04:56.781] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:04:56.781] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:04:56.806] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:04:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:04:56.806] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:04:56.808] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:04:56.839] [DEBUG] QUERY OK source="tms_terminals" db=30.8ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:04:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:04:56.863] [DEBUG] QUERY OK db=23.3ms idle=31.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5de3c1be-ad52-49ba-8e04-66f34841225a", "2026-06-17T11:04:06Z", ~N[2026-06-17 11:04:56], ~N[2026-06-17 11:04:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:04:56.863] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39343, oid: "5de3c1be-ad52-49ba-8e04-66f34841225a", upload_time: "2026-06-17T11:04:06Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:56], updated_at: ~N[2026-06-17 11:04:56]} [2026-06-17 11:04:56.863] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:06Z", "value" => "morefun"} [2026-06-17 11:04:56.897] [DEBUG] QUERY OK db=33.4ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "morefun", "vendor", 39343, ~N[2026-06-17 11:04:56], ~N[2026-06-17 11:04:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:56.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307499, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:56], updated_at: ~N[2026-06-17 11:04:56]}} [2026-06-17 11:04:56.898] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:06Z", "value" => "kiosk_launcher"} [2026-06-17 11:04:56.922] [DEBUG] QUERY OK db=23.4ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "kiosk_launcher", "model", 39343, ~N[2026-06-17 11:04:56], ~N[2026-06-17 11:04:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:56.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307500, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:56], updated_at: ~N[2026-06-17 11:04:56]}} [2026-06-17 11:04:56.922] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:06Z", "value" => "1.0"} [2026-06-17 11:04:56.955] [DEBUG] QUERY OK db=32.3ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "1.0", "app_version", 39343, ~N[2026-06-17 11:04:56], ~N[2026-06-17 11:04:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:56.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307501, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:56], updated_at: ~N[2026-06-17 11:04:56]}} [2026-06-17 11:04:56.955] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:06Z", "value" => "13"} [2026-06-17 11:04:56.982] [DEBUG] QUERY OK db=25.5ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "13", "android_version", 39343, ~N[2026-06-17 11:04:56], ~N[2026-06-17 11:04:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:56.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307502, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:56], updated_at: ~N[2026-06-17 11:04:56]}} [2026-06-17 11:04:56.982] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:06Z", "value" => "750"} [2026-06-17 11:04:57.016] [DEBUG] QUERY OK db=33.1ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "750", "ram_free_mb", 39343, ~N[2026-06-17 11:04:56], ~N[2026-06-17 11:04:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307503, itemkey: "ram_free_mb", value: "750", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:56], updated_at: ~N[2026-06-17 11:04:56]}} [2026-06-17 11:04:57.016] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:06Z", "value" => "WIFI"} [2026-06-17 11:04:57.041] [DEBUG] QUERY OK db=24.5ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "WIFI", "network_type", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307504, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.041] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:06Z", "value" => "true"} [2026-06-17 11:04:57.066] [DEBUG] QUERY OK db=24.6ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "true", "kiosk_active", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307505, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.067] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:06Z", "value" => ""} [2026-06-17 11:04:57.092] [DEBUG] QUERY OK db=24.1ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:06Z", "sim_operator", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307506, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.092] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"} [2026-06-17 11:04:57.117] [DEBUG] QUERY OK db=24.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "UNKNOWN", "sim_number", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307507, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.118] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"} [2026-06-17 11:04:57.142] [DEBUG] QUERY OK db=24.4ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "UNKNOWN", "sim_iccid", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307508, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.144] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"} [2026-06-17 11:04:57.177] [DEBUG] QUERY OK db=33.0ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "UNKNOWN", "sim_imsi", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307509, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.179] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"} [2026-06-17 11:04:57.203] [DEBUG] QUERY OK db=23.0ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "UNKNOWN", "sim_iccid2", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307510, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.203] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:06Z", "value" => "UNKNOWN"} [2026-06-17 11:04:57.258] [DEBUG] QUERY OK db=51.3ms queue=3.2ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "UNKNOWN", "sim_imsi2", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307511, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.259] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:06Z", "value" => "7"} [2026-06-17 11:04:57.312] [DEBUG] QUERY OK db=52.4ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "7", "data_usage_mb", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307512, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.312] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:06Z", "value" => "0"} [2026-06-17 11:04:57.419] [DEBUG] QUERY OK db=106.5ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "0", "mobile_data_mb", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307513, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:04:57.422] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:04:57.482] [DEBUG] QUERY OK db=58.9ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39343, ~N[2026-06-17 11:04:57], ~N[2026-06-17 11:04:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:04:57.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307514, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:06Z", message: nil, status_log_id: 39343, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:04:57], updated_at: ~N[2026-06-17 11:04:57]}} [2026-06-17 11:05:02.870] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:02.871] [INFO ] Incoming JSON payload: {"oid":"87adbcfb-486c-4c55-923c-ff2725d7af8d","sn":"98251226730002","uploadTime":"2026-06-17T11:04:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"ram_free_mb","value":"751","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04:12Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:02.871] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "87adbcfb-486c-4c55-923c-ff2725d7af8d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:12Z", "value" => "751"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:12Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:12Z", "vendor" => "morefun"} [2026-06-17 11:05:02.872] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:02.872] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:02.872] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:02.874] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.1ms idle=515.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-06-17 11:05:02.876] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=1.3ms idle=478.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-06-17 11:05:02.876] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:02.884] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=4.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:02.888] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:02.922] [DEBUG] QUERY OK source="tms_terminals" db=26.9ms queue=0.4ms idle=17.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:02.922] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:02.925] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=37.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:02.959] [DEBUG] QUERY OK source="tms_terminals" db=32.2ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:02.996] [DEBUG] QUERY OK db=36.5ms idle=34.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "87adbcfb-486c-4c55-923c-ff2725d7af8d", "2026-06-17T11:04:12Z", ~N[2026-06-17 11:05:02], ~N[2026-06-17 11:05:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:02.998] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39344, oid: "87adbcfb-486c-4c55-923c-ff2725d7af8d", upload_time: "2026-06-17T11:04:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:02], updated_at: ~N[2026-06-17 11:05:02]} [2026-06-17 11:05:02.998] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:12Z", "value" => "morefun"} [2026-06-17 11:05:03.036] [DEBUG] QUERY OK db=36.8ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "morefun", "vendor", 39344, ~N[2026-06-17 11:05:02], ~N[2026-06-17 11:05:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307515, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:02], updated_at: ~N[2026-06-17 11:05:02]}} [2026-06-17 11:05:03.037] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:12Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:03.061] [DEBUG] QUERY OK db=23.9ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "kiosk_launcher", "model", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307516, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.063] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:12Z", "value" => "1.0"} [2026-06-17 11:05:03.099] [DEBUG] QUERY OK db=35.4ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "1.0", "app_version", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307517, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.099] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:12Z", "value" => "13"} [2026-06-17 11:05:03.126] [DEBUG] QUERY OK db=26.5ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "13", "android_version", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307518, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.127] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:12Z", "value" => "751"} [2026-06-17 11:05:03.162] [DEBUG] QUERY OK db=34.8ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "751", "ram_free_mb", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307519, itemkey: "ram_free_mb", value: "751", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.163] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:12Z", "value" => "WIFI"} [2026-06-17 11:05:03.198] [DEBUG] QUERY OK db=35.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "WIFI", "network_type", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307520, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.199] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:12Z", "value" => "true"} [2026-06-17 11:05:03.224] [DEBUG] QUERY OK db=25.1ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "true", "kiosk_active", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307521, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.225] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:12Z", "value" => ""} [2026-06-17 11:05:03.271] [DEBUG] QUERY OK db=45.6ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:12Z", "sim_operator", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307522, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.271] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"} [2026-06-17 11:05:03.323] [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-06-17T11:04:12Z", "UNKNOWN", "sim_number", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307523, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.323] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"} [2026-06-17 11:05:03.364] [DEBUG] QUERY OK db=39.8ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "UNKNOWN", "sim_iccid", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307524, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.364] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"} [2026-06-17 11:05:03.396] [DEBUG] QUERY OK db=32.1ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "UNKNOWN", "sim_imsi", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307525, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.397] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"} [2026-06-17 11:05:03.427] [DEBUG] QUERY OK db=30.0ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "UNKNOWN", "sim_iccid2", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307526, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.428] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:12Z", "value" => "UNKNOWN"} [2026-06-17 11:05:03.465] [DEBUG] QUERY OK db=30.3ms queue=5.3ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "UNKNOWN", "sim_imsi2", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307527, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.466] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:12Z", "value" => "7"} [2026-06-17 11:05:03.496] [DEBUG] QUERY OK db=24.8ms queue=4.0ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "7", "data_usage_mb", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307528, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.496] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:12Z", "value" => "0"} [2026-06-17 11:05:03.534] [DEBUG] QUERY OK db=37.3ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "0", "mobile_data_mb", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307529, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:03.535] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:03.567] [DEBUG] QUERY OK db=30.9ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39344, ~N[2026-06-17 11:05:03], ~N[2026-06-17 11:05:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:03.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307530, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:12Z", message: nil, status_log_id: 39344, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:03], updated_at: ~N[2026-06-17 11:05:03]}} [2026-06-17 11:05:08.942] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:08.942] [INFO ] Incoming JSON payload: {"oid":"aab8ddc2-c27e-4d4b-8da9-0919c06f40ea","sn":"98251226730002","uploadTime":"2026-06-17T11:04:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:08.943] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "aab8ddc2-c27e-4d4b-8da9-0919c06f40ea", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:18Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:18Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:18Z", "vendor" => "morefun"} [2026-06-17 11:05:08.943] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:08.943] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:08.943] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:08.945] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.3ms idle=1520.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-06-17 11:05:08.947] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=519.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-06-17 11:05:08.947] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:08.948] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:08.948] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:08.972] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:08.973] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:08.973] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:09.003] [DEBUG] QUERY OK source="tms_terminals" db=28.4ms queue=0.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:09.025] [DEBUG] QUERY OK db=21.4ms queue=0.3ms idle=29.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "aab8ddc2-c27e-4d4b-8da9-0919c06f40ea", "2026-06-17T11:04:18Z", ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:09.025] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39345, oid: "aab8ddc2-c27e-4d4b-8da9-0919c06f40ea", upload_time: "2026-06-17T11:04:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]} [2026-06-17 11:05:09.025] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:18Z", "value" => "morefun"} [2026-06-17 11:05:09.049] [DEBUG] QUERY OK db=23.3ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "morefun", "vendor", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307531, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.050] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:18Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:09.074] [DEBUG] QUERY OK db=23.5ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "kiosk_launcher", "model", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307532, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.074] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:18Z", "value" => "1.0"} [2026-06-17 11:05:09.110] [DEBUG] QUERY OK db=35.3ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "1.0", "app_version", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307533, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.110] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:18Z", "value" => "13"} [2026-06-17 11:05:09.129] [DEBUG] QUERY OK db=19.1ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "13", "android_version", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307534, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.130] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:18Z", "value" => "762"} [2026-06-17 11:05:09.164] [DEBUG] QUERY OK db=24.2ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "762", "ram_free_mb", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307535, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.165] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:18Z", "value" => "WIFI"} [2026-06-17 11:05:09.194] [DEBUG] QUERY OK db=29.2ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "WIFI", "network_type", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307536, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.195] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:18Z", "value" => "true"} [2026-06-17 11:05:09.222] [DEBUG] QUERY OK db=26.0ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "true", "kiosk_active", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307537, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.222] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:18Z", "value" => ""} [2026-06-17 11:05:09.246] [DEBUG] QUERY OK db=14.4ms queue=4.0ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:18Z", "sim_operator", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307538, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.247] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"} [2026-06-17 11:05:09.278] [DEBUG] QUERY OK db=28.9ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "UNKNOWN", "sim_number", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307539, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.278] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"} [2026-06-17 11:05:09.323] [DEBUG] QUERY OK db=44.7ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "UNKNOWN", "sim_iccid", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307540, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.323] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"} [2026-06-17 11:05:09.381] [DEBUG] QUERY OK db=56.9ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "UNKNOWN", "sim_imsi", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307541, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.381] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"} [2026-06-17 11:05:09.411] [DEBUG] QUERY OK db=28.3ms queue=0.2ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "UNKNOWN", "sim_iccid2", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307542, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.411] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:18Z", "value" => "UNKNOWN"} [2026-06-17 11:05:09.430] [DEBUG] QUERY OK db=18.9ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "UNKNOWN", "sim_imsi2", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307543, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.431] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:18Z", "value" => "7"} [2026-06-17 11:05:09.457] [DEBUG] QUERY OK db=26.0ms idle=3.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "7", "data_usage_mb", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307544, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.457] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:18Z", "value" => "0"} [2026-06-17 11:05:09.482] [DEBUG] QUERY OK db=23.7ms queue=0.1ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:18Z", "0", "mobile_data_mb", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307545, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:09.483] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:09.519] [DEBUG] QUERY OK db=35.5ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39345, ~N[2026-06-17 11:05:09], ~N[2026-06-17 11:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:09.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307546, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:18Z", message: nil, status_log_id: 39345, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:09], updated_at: ~N[2026-06-17 11:05:09]}} [2026-06-17 11:05:15.038] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:15.039] [INFO ] Incoming JSON payload: {"oid":"62cdd435-96f4-46e1-ba6b-d32940e3c64d","sn":"98251226730002","uploadTime":"2026-06-17T11:04:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"ram_free_mb","value":"761","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:15.040] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "62cdd435-96f4-46e1-ba6b-d32940e3c64d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:25Z", "value" => "761"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:25Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:25Z", "vendor" => "morefun"} [2026-06-17 11:05:15.040] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:15.040] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:15.040] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:15.044] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms queue=2.0ms idle=592.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-06-17 11:05:15.045] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=293.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-06-17 11:05:15.045] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:15.047] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:15.047] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:15.080] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:15], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:15.080] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:15.081] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=33.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:15.105] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:15], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:15.135] [DEBUG] QUERY OK db=29.9ms queue=0.1ms idle=24.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "62cdd435-96f4-46e1-ba6b-d32940e3c64d", "2026-06-17T11:04:25Z", ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:15.136] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39346, oid: "62cdd435-96f4-46e1-ba6b-d32940e3c64d", upload_time: "2026-06-17T11:04:25Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]} [2026-06-17 11:05:15.136] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:25Z", "value" => "morefun"} [2026-06-17 11:05:15.159] [DEBUG] QUERY OK db=23.2ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "morefun", "vendor", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307547, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.165] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:25Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:15.192] [DEBUG] QUERY OK db=26.6ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "kiosk_launcher", "model", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307548, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.192] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:25Z", "value" => "1.0"} [2026-06-17 11:05:15.228] [DEBUG] QUERY OK db=35.4ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "1.0", "app_version", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307549, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.228] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:25Z", "value" => "13"} [2026-06-17 11:05:15.252] [DEBUG] QUERY OK db=23.4ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "13", "android_version", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307550, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.252] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:25Z", "value" => "761"} [2026-06-17 11:05:15.281] [DEBUG] QUERY OK db=28.2ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "761", "ram_free_mb", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307551, itemkey: "ram_free_mb", value: "761", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.284] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:25Z", "value" => "WIFI"} [2026-06-17 11:05:15.312] [DEBUG] QUERY OK db=27.0ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "WIFI", "network_type", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307552, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.312] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:25Z", "value" => "true"} [2026-06-17 11:05:15.336] [DEBUG] QUERY OK db=23.3ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "true", "kiosk_active", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307553, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.336] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:25Z", "value" => ""} [2026-06-17 11:05:15.361] [DEBUG] QUERY OK db=24.5ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:25Z", "sim_operator", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307554, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.361] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"} [2026-06-17 11:05:15.392] [DEBUG] QUERY OK db=29.6ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "UNKNOWN", "sim_number", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307555, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.392] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"} [2026-06-17 11:05:15.425] [DEBUG] QUERY OK db=32.5ms queue=0.1ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "UNKNOWN", "sim_iccid", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307556, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.425] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"} [2026-06-17 11:05:15.450] [DEBUG] QUERY OK db=24.3ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "UNKNOWN", "sim_imsi", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307557, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.450] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"} [2026-06-17 11:05:15.481] [DEBUG] QUERY OK db=29.7ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "UNKNOWN", "sim_iccid2", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307558, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.481] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:25Z", "value" => "UNKNOWN"} [2026-06-17 11:05:15.505] [DEBUG] QUERY OK db=23.9ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "UNKNOWN", "sim_imsi2", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307559, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.506] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:25Z", "value" => "7"} [2026-06-17 11:05:15.531] [DEBUG] QUERY OK db=24.0ms queue=0.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "7", "data_usage_mb", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307560, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.531] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:25Z", "value" => "0"} [2026-06-17 11:05:15.566] [DEBUG] QUERY OK db=31.7ms queue=2.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:25Z", "0", "mobile_data_mb", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307561, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:15.567] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:15.592] [DEBUG] QUERY OK db=24.2ms queue=0.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39346, ~N[2026-06-17 11:05:15], ~N[2026-06-17 11:05:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:15.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307562, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:25Z", message: nil, status_log_id: 39346, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:15], updated_at: ~N[2026-06-17 11:05:15]}} [2026-06-17 11:05:16.825] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 11:05:16.826] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=1233.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-06-17 11:05:16.827] [DEBUG] QUERY OK source="filter_usage" db=1.1ms idle=371.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-06-17 11:05:16.827] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 11:05:17.342] [INFO ] Running offline device check... [2026-06-17 11:05:17.342] [INFO ] Starting offline device check... [2026-06-17 11:05:17.343] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=516.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:679 [2026-06-17 11:05:17.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=518.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:694 [2026-06-17 11:05:17.356] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=8.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:694 [2026-06-17 11:05:17.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.360] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.361] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.363] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.364] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.365] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.366] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.369] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.375] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.382] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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:694 [2026-06-17 11:05:17.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.391] [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:694 [2026-06-17 11:05:17.400] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.403] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.404] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.405] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.407] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.418] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.420] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=12.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:694 [2026-06-17 11:05:17.421] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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:694 [2026-06-17 11:05:17.428] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.432] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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:694 [2026-06-17 11:05:17.433] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.439] [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:694 [2026-06-17 11:05:17.439] [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:694 [2026-06-17 11:05:17.441] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.443] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.443] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:05:17.443] [INFO ] Offline device check completed. Found 35 offline devices, updated 0 statuses. [2026-06-17 11:05:17.443] [INFO ] Offline device check completed successfully [2026-06-17 11:05:22.087] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:22.087] [INFO ] Incoming JSON payload: {"oid":"e977bb24-4a63-4a9a-b541-23054a8bfbff","sn":"98251226730002","uploadTime":"2026-06-17T11:04:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"ram_free_mb","value":"765","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04:31Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:22.088] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e977bb24-4a63-4a9a-b541-23054a8bfbff", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:31Z", "value" => "765"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:31Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:31Z", "vendor" => "morefun"} [2026-06-17 11:05:22.088] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:22.088] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:22.088] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:22.089] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=728.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:05:22.090] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=619.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-06-17 11:05:22.090] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:22.092] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:22.092] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:22.127] [DEBUG] QUERY OK source="tms_terminals" db=34.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:22.127] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:22.128] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=35.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:22.150] [DEBUG] QUERY OK source="tms_terminals" db=22.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:22.162] [DEBUG] QUERY OK db=11.3ms idle=22.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e977bb24-4a63-4a9a-b541-23054a8bfbff", "2026-06-17T11:04:31Z", ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:22.162] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39347, oid: "e977bb24-4a63-4a9a-b541-23054a8bfbff", upload_time: "2026-06-17T11:04:31Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]} [2026-06-17 11:05:22.163] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:31Z", "value" => "morefun"} [2026-06-17 11:05:22.224] [DEBUG] QUERY OK db=61.2ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "morefun", "vendor", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307563, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.224] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:31Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:22.244] [DEBUG] QUERY OK db=18.3ms queue=0.8ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "kiosk_launcher", "model", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307564, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.244] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:31Z", "value" => "1.0"} [2026-06-17 11:05:22.279] [DEBUG] QUERY OK db=34.2ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "1.0", "app_version", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307565, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.279] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:31Z", "value" => "13"} [2026-06-17 11:05:22.309] [DEBUG] QUERY OK db=29.3ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "13", "android_version", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307566, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.310] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:31Z", "value" => "765"} [2026-06-17 11:05:22.349] [DEBUG] QUERY OK db=38.7ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "765", "ram_free_mb", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307567, itemkey: "ram_free_mb", value: "765", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.351] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:31Z", "value" => "WIFI"} [2026-06-17 11:05:22.379] [DEBUG] QUERY OK db=28.2ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "WIFI", "network_type", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307568, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.380] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:31Z", "value" => "true"} [2026-06-17 11:05:22.402] [DEBUG] QUERY OK db=20.4ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "true", "kiosk_active", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307569, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.402] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:31Z", "value" => ""} [2026-06-17 11:05:22.419] [DEBUG] QUERY OK db=16.6ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:31Z", "sim_operator", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307570, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.420] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"} [2026-06-17 11:05:22.454] [DEBUG] QUERY OK db=33.5ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "UNKNOWN", "sim_number", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307571, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.454] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"} [2026-06-17 11:05:22.479] [DEBUG] QUERY OK db=24.8ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "UNKNOWN", "sim_iccid", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307572, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.480] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"} [2026-06-17 11:05:22.502] [DEBUG] QUERY OK db=22.5ms idle=7.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "UNKNOWN", "sim_imsi", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307573, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.503] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"} [2026-06-17 11:05:22.518] [DEBUG] QUERY OK db=13.9ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "UNKNOWN", "sim_iccid2", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307574, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.518] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:31Z", "value" => "UNKNOWN"} [2026-06-17 11:05:22.539] [DEBUG] QUERY OK db=20.1ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "UNKNOWN", "sim_imsi2", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307575, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.539] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:31Z", "value" => "7"} [2026-06-17 11:05:22.578] [DEBUG] QUERY OK db=38.5ms queue=0.1ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "7", "data_usage_mb", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307576, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.580] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:31Z", "value" => "0"} [2026-06-17 11:05:22.599] [DEBUG] QUERY OK db=18.5ms queue=0.3ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "0", "mobile_data_mb", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307577, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:22.600] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:22.621] [DEBUG] QUERY OK db=17.5ms queue=0.1ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39347, ~N[2026-06-17 11:05:22], ~N[2026-06-17 11:05:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:22.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307578, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:31Z", message: nil, status_log_id: 39347, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:22], updated_at: ~N[2026-06-17 11:05:22]}} [2026-06-17 11:05:27.652] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:27.652] [INFO ] Incoming JSON payload: {"oid":"50562b40-3c51-414c-85b6-371d0eb20561","sn":"98251226730002","uploadTime":"2026-06-17T11:04:37Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"ram_free_mb","value":"765","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:37Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:27.654] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "50562b40-3c51-414c-85b6-371d0eb20561", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:37Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:37Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:37Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:37Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:37Z", "value" => "765"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:37Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:37Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:37Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:37Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:37Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:37Z", "vendor" => "morefun"} [2026-06-17 11:05:27.654] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:27.654] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:27.655] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:27.656] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=810.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-06-17 11:05:27.657] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=167.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.`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-06-17 11:05:27.657] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:27.658] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:27.658] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:27.673] [DEBUG] QUERY OK source="tms_terminals" db=14.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:27.673] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:27.674] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:27.707] [DEBUG] QUERY OK source="tms_terminals" db=32.0ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:27.740] [DEBUG] QUERY OK db=32.0ms queue=0.2ms idle=33.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "50562b40-3c51-414c-85b6-371d0eb20561", "2026-06-17T11:04:37Z", ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:27.740] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39348, oid: "50562b40-3c51-414c-85b6-371d0eb20561", upload_time: "2026-06-17T11:04:37Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]} [2026-06-17 11:05:27.740] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:37Z", "value" => "morefun"} [2026-06-17 11:05:27.758] [DEBUG] QUERY OK db=16.8ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "morefun", "vendor", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307579, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.758] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:37Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:27.769] [DEBUG] QUERY OK db=10.8ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "kiosk_launcher", "model", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307580, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.770] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:37Z", "value" => "1.0"} [2026-06-17 11:05:27.787] [DEBUG] QUERY OK db=17.0ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "1.0", "app_version", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307581, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.788] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:37Z", "value" => "13"} [2026-06-17 11:05:27.811] [DEBUG] QUERY OK db=22.9ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "13", "android_version", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307582, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.812] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:37Z", "value" => "765"} [2026-06-17 11:05:27.837] [DEBUG] QUERY OK db=25.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "765", "ram_free_mb", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307583, itemkey: "ram_free_mb", value: "765", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.838] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:37Z", "value" => "WIFI"} [2026-06-17 11:05:27.861] [DEBUG] QUERY OK db=22.7ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "WIFI", "network_type", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307584, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.862] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:37Z", "value" => "true"} [2026-06-17 11:05:27.873] [DEBUG] QUERY OK db=11.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "true", "kiosk_active", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307585, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.875] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:37Z", "value" => ""} [2026-06-17 11:05:27.892] [DEBUG] QUERY OK db=16.3ms queue=0.1ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:37Z", "sim_operator", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307586, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.892] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"} [2026-06-17 11:05:27.925] [DEBUG] QUERY OK db=32.9ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "UNKNOWN", "sim_number", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307587, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.926] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"} [2026-06-17 11:05:27.949] [DEBUG] QUERY OK db=23.1ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "UNKNOWN", "sim_iccid", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307588, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.950] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"} [2026-06-17 11:05:27.973] [DEBUG] QUERY OK db=23.3ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "UNKNOWN", "sim_imsi", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307589, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.974] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"} [2026-06-17 11:05:27.986] [DEBUG] QUERY OK db=12.4ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "UNKNOWN", "sim_iccid2", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:27.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307590, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:27.987] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:37Z", "value" => "UNKNOWN"} [2026-06-17 11:05:28.006] [DEBUG] QUERY OK db=19.1ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "UNKNOWN", "sim_imsi2", 39348, ~N[2026-06-17 11:05:27], ~N[2026-06-17 11:05:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:28.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307591, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:27], updated_at: ~N[2026-06-17 11:05:27]}} [2026-06-17 11:05:28.007] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:37Z", "value" => "7"} [2026-06-17 11:05:28.042] [DEBUG] QUERY OK db=33.4ms queue=0.2ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "7", "data_usage_mb", 39348, ~N[2026-06-17 11:05:28], ~N[2026-06-17 11:05:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:28.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307592, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:28], updated_at: ~N[2026-06-17 11:05:28]}} [2026-06-17 11:05:28.043] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:37Z", "value" => "0"} [2026-06-17 11:05:28.067] [DEBUG] QUERY OK db=23.4ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:37Z", "0", "mobile_data_mb", 39348, ~N[2026-06-17 11:05:28], ~N[2026-06-17 11:05:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:28.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307593, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:28], updated_at: ~N[2026-06-17 11:05:28]}} [2026-06-17 11:05:28.068] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:28.091] [DEBUG] QUERY OK db=21.9ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39348, ~N[2026-06-17 11:05:28], ~N[2026-06-17 11:05:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:28.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307594, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:37Z", message: nil, status_log_id: 39348, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:28], updated_at: ~N[2026-06-17 11:05:28]}} [2026-06-17 11:05:33.561] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:33.561] [INFO ] Incoming JSON payload: {"oid":"4d1e004f-bb91-4500-98cd-4fbc67b76d03","sn":"98251226730002","uploadTime":"2026-06-17T11:04:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:33.562] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4d1e004f-bb91-4500-98cd-4fbc67b76d03", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:43Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:43Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:43Z", "vendor" => "morefun"} [2026-06-17 11:05:33.562] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:33.562] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:33.563] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:33.563] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=201.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-06-17 11:05:33.564] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=58.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-06-17 11:05:33.564] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:33.565] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:33.565] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:33.600] [DEBUG] QUERY OK source="tms_terminals" db=34.6ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:33.600] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:33.601] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=35.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:33.628] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:33.648] [DEBUG] QUERY OK db=20.0ms queue=0.1ms idle=27.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4d1e004f-bb91-4500-98cd-4fbc67b76d03", "2026-06-17T11:04:43Z", ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:33.649] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39349, oid: "4d1e004f-bb91-4500-98cd-4fbc67b76d03", upload_time: "2026-06-17T11:04:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]} [2026-06-17 11:05:33.649] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:43Z", "value" => "morefun"} [2026-06-17 11:05:33.681] [DEBUG] QUERY OK db=31.9ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "morefun", "vendor", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307595, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.682] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:43Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:33.707] [DEBUG] QUERY OK db=24.2ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "kiosk_launcher", "model", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307596, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.707] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:43Z", "value" => "1.0"} [2026-06-17 11:05:33.740] [DEBUG] QUERY OK db=32.7ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "1.0", "app_version", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307597, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.741] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:43Z", "value" => "13"} [2026-06-17 11:05:33.759] [DEBUG] QUERY OK db=17.3ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "13", "android_version", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307598, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.760] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:43Z", "value" => "764"} [2026-06-17 11:05:33.780] [DEBUG] QUERY OK db=20.0ms queue=0.1ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "764", "ram_free_mb", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307599, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.780] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:43Z", "value" => "WIFI"} [2026-06-17 11:05:33.808] [DEBUG] QUERY OK db=27.5ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "WIFI", "network_type", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307600, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.809] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:43Z", "value" => "true"} [2026-06-17 11:05:33.847] [DEBUG] QUERY OK db=36.8ms queue=0.8ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "true", "kiosk_active", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307601, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.847] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:43Z", "value" => ""} [2026-06-17 11:05:33.871] [DEBUG] QUERY OK db=23.2ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:43Z", "sim_operator", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307602, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.871] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"} [2026-06-17 11:05:33.895] [DEBUG] QUERY OK db=23.7ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "UNKNOWN", "sim_number", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307603, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.895] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"} [2026-06-17 11:05:33.919] [DEBUG] QUERY OK db=23.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "UNKNOWN", "sim_iccid", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307604, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.919] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"} [2026-06-17 11:05:33.949] [DEBUG] QUERY OK db=29.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "UNKNOWN", "sim_imsi", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307605, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.949] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"} [2026-06-17 11:05:33.984] [DEBUG] QUERY OK db=34.0ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "UNKNOWN", "sim_iccid2", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:33.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307606, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:33.984] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:43Z", "value" => "UNKNOWN"} [2026-06-17 11:05:34.003] [DEBUG] QUERY OK db=18.2ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "UNKNOWN", "sim_imsi2", 39349, ~N[2026-06-17 11:05:33], ~N[2026-06-17 11:05:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:34.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307607, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:33], updated_at: ~N[2026-06-17 11:05:33]}} [2026-06-17 11:05:34.003] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:43Z", "value" => "7"} [2026-06-17 11:05:34.035] [DEBUG] QUERY OK db=30.8ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "7", "data_usage_mb", 39349, ~N[2026-06-17 11:05:34], ~N[2026-06-17 11:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:34.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307608, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:34], updated_at: ~N[2026-06-17 11:05:34]}} [2026-06-17 11:05:34.035] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:43Z", "value" => "0"} [2026-06-17 11:05:34.057] [DEBUG] QUERY OK db=21.9ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:43Z", "0", "mobile_data_mb", 39349, ~N[2026-06-17 11:05:34], ~N[2026-06-17 11:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:34.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307609, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:34], updated_at: ~N[2026-06-17 11:05:34]}} [2026-06-17 11:05:34.060] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:34.097] [DEBUG] QUERY OK db=34.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39349, ~N[2026-06-17 11:05:34], ~N[2026-06-17 11:05:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:34.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307610, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:43Z", message: nil, status_log_id: 39349, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:34], updated_at: ~N[2026-06-17 11:05:34]}} [2026-06-17 11:05:39.650] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:39.650] [INFO ] Incoming JSON payload: {"oid":"1db0e451-4a81-4fe8-8e2a-69999f77b4b9","sn":"98251226730002","uploadTime":"2026-06-17T11:04:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04:49Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:39.654] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1db0e451-4a81-4fe8-8e2a-69999f77b4b9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:49Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:49Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:49Z", "vendor" => "morefun"} [2026-06-17 11:05:39.655] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:39.655] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:39.655] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:39.658] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=1.6ms idle=294.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-06-17 11:05:39.661] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=137.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-06-17 11:05:39.661] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:39.663] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:39.664] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:39.683] [DEBUG] QUERY OK source="tms_terminals" db=19.0ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:39.683] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:39.685] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=20.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:39.701] [DEBUG] QUERY OK source="tms_terminals" db=15.7ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:39.730] [DEBUG] QUERY OK db=27.5ms queue=1.0ms idle=16.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1db0e451-4a81-4fe8-8e2a-69999f77b4b9", "2026-06-17T11:04:49Z", ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:39.730] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39350, oid: "1db0e451-4a81-4fe8-8e2a-69999f77b4b9", upload_time: "2026-06-17T11:04:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]} [2026-06-17 11:05:39.730] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:49Z", "value" => "morefun"} [2026-06-17 11:05:39.765] [DEBUG] QUERY OK db=34.2ms queue=0.5ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "morefun", "vendor", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307611, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.765] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:49Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:39.783] [DEBUG] QUERY OK db=17.5ms queue=0.1ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "kiosk_launcher", "model", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307612, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.784] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:49Z", "value" => "1.0"} [2026-06-17 11:05:39.796] [DEBUG] QUERY OK db=12.3ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "1.0", "app_version", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307613, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.797] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:49Z", "value" => "13"} [2026-06-17 11:05:39.808] [DEBUG] QUERY OK db=11.3ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "13", "android_version", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307614, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.809] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:49Z", "value" => "764"} [2026-06-17 11:05:39.845] [DEBUG] QUERY OK db=36.1ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "764", "ram_free_mb", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307615, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.846] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:49Z", "value" => "WIFI"} [2026-06-17 11:05:39.869] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "WIFI", "network_type", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307616, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.870] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:49Z", "value" => "true"} [2026-06-17 11:05:39.888] [DEBUG] QUERY OK db=17.7ms queue=0.3ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "true", "kiosk_active", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307617, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.889] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:49Z", "value" => ""} [2026-06-17 11:05:39.901] [DEBUG] QUERY OK db=11.9ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:49Z", "sim_operator", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307618, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.901] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"} [2026-06-17 11:05:39.925] [DEBUG] QUERY OK db=23.5ms idle=13.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "UNKNOWN", "sim_number", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307619, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.926] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"} [2026-06-17 11:05:39.964] [DEBUG] QUERY OK db=38.6ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "UNKNOWN", "sim_iccid", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307620, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.965] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"} [2026-06-17 11:05:39.991] [DEBUG] QUERY OK db=25.8ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "UNKNOWN", "sim_imsi", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:39.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307621, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:39.991] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"} [2026-06-17 11:05:40.005] [DEBUG] QUERY OK db=12.8ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "UNKNOWN", "sim_iccid2", 39350, ~N[2026-06-17 11:05:39], ~N[2026-06-17 11:05:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:40.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307622, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:39], updated_at: ~N[2026-06-17 11:05:39]}} [2026-06-17 11:05:40.005] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:49Z", "value" => "UNKNOWN"} [2026-06-17 11:05:40.022] [DEBUG] QUERY OK db=16.8ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "UNKNOWN", "sim_imsi2", 39350, ~N[2026-06-17 11:05:40], ~N[2026-06-17 11:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:40.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307623, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:40], updated_at: ~N[2026-06-17 11:05:40]}} [2026-06-17 11:05:40.023] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:49Z", "value" => "7"} [2026-06-17 11:05:40.056] [DEBUG] QUERY OK db=32.3ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "7", "data_usage_mb", 39350, ~N[2026-06-17 11:05:40], ~N[2026-06-17 11:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:40.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307624, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:40], updated_at: ~N[2026-06-17 11:05:40]}} [2026-06-17 11:05:40.056] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:49Z", "value" => "0"} [2026-06-17 11:05:40.081] [DEBUG] QUERY OK db=23.5ms queue=1.2ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "0", "mobile_data_mb", 39350, ~N[2026-06-17 11:05:40], ~N[2026-06-17 11:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:40.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307625, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:40], updated_at: ~N[2026-06-17 11:05:40]}} [2026-06-17 11:05:40.082] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:40.098] [DEBUG] QUERY OK db=14.9ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39350, ~N[2026-06-17 11:05:40], ~N[2026-06-17 11:05:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:40.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307626, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:49Z", message: nil, status_log_id: 39350, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:40], updated_at: ~N[2026-06-17 11:05:40]}} [2026-06-17 11:05:45.738] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:45.738] [INFO ] Incoming JSON payload: {"oid":"b8b41f53-5cc4-4ee0-8e90-41ddb3bef6ea","sn":"98251226730002","uploadTime":"2026-06-17T11:04:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:04:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:04:55Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:45.740] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b8b41f53-5cc4-4ee0-8e90-41ddb3bef6ea", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:55Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:55Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:04:55Z", "vendor" => "morefun"} [2026-06-17 11:05:45.740] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:45.740] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:45.740] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:45.741] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=945.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-06-17 11:05:45.741] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=202.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-06-17 11:05:45.742] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:45.743] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:45.743] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:45.761] [DEBUG] QUERY OK source="tms_terminals" db=17.9ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:45.762] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:45.763] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=18.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:45.787] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:45.811] [DEBUG] QUERY OK db=23.1ms idle=24.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b8b41f53-5cc4-4ee0-8e90-41ddb3bef6ea", "2026-06-17T11:04:55Z", ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:45.811] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39351, oid: "b8b41f53-5cc4-4ee0-8e90-41ddb3bef6ea", upload_time: "2026-06-17T11:04:55Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]} [2026-06-17 11:05:45.811] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:04:55Z", "value" => "morefun"} [2026-06-17 11:05:45.833] [DEBUG] QUERY OK db=21.8ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "morefun", "vendor", 39351, ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:45.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307627, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]}} [2026-06-17 11:05:45.834] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:04:55Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:45.854] [DEBUG] QUERY OK db=20.3ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "kiosk_launcher", "model", 39351, ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:45.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307628, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]}} [2026-06-17 11:05:45.855] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:04:55Z", "value" => "1.0"} [2026-06-17 11:05:45.874] [DEBUG] QUERY OK db=17.2ms queue=0.1ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "1.0", "app_version", 39351, ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:45.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307629, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]}} [2026-06-17 11:05:45.874] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:04:55Z", "value" => "13"} [2026-06-17 11:05:45.897] [DEBUG] QUERY OK db=23.0ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "13", "android_version", 39351, ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:45.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307630, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]}} [2026-06-17 11:05:45.898] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:04:55Z", "value" => "764"} [2026-06-17 11:05:45.928] [DEBUG] QUERY OK db=29.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "764", "ram_free_mb", 39351, ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:45.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307631, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]}} [2026-06-17 11:05:45.929] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:04:55Z", "value" => "WIFI"} [2026-06-17 11:05:45.954] [DEBUG] QUERY OK db=23.9ms queue=0.8ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "WIFI", "network_type", 39351, ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:45.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307632, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]}} [2026-06-17 11:05:45.954] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:04:55Z", "value" => "true"} [2026-06-17 11:05:45.971] [DEBUG] QUERY OK db=16.9ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "true", "kiosk_active", 39351, ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:45.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307633, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]}} [2026-06-17 11:05:45.972] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:04:55Z", "value" => ""} [2026-06-17 11:05:46.002] [DEBUG] QUERY OK db=29.2ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:04:55Z", "sim_operator", 39351, ~N[2026-06-17 11:05:45], ~N[2026-06-17 11:05:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307634, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:45], updated_at: ~N[2026-06-17 11:05:45]}} [2026-06-17 11:05:46.002] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"} [2026-06-17 11:05:46.026] [DEBUG] QUERY OK db=23.8ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "UNKNOWN", "sim_number", 39351, ~N[2026-06-17 11:05:46], ~N[2026-06-17 11:05:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307635, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:46], updated_at: ~N[2026-06-17 11:05:46]}} [2026-06-17 11:05:46.029] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"} [2026-06-17 11:05:46.062] [DEBUG] QUERY OK db=32.3ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "UNKNOWN", "sim_iccid", 39351, ~N[2026-06-17 11:05:46], ~N[2026-06-17 11:05:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307636, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:46], updated_at: ~N[2026-06-17 11:05:46]}} [2026-06-17 11:05:46.064] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"} [2026-06-17 11:05:46.080] [DEBUG] QUERY OK db=16.5ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "UNKNOWN", "sim_imsi", 39351, ~N[2026-06-17 11:05:46], ~N[2026-06-17 11:05:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307637, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:46], updated_at: ~N[2026-06-17 11:05:46]}} [2026-06-17 11:05:46.081] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"} [2026-06-17 11:05:46.093] [DEBUG] QUERY OK db=11.7ms queue=0.1ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "UNKNOWN", "sim_iccid2", 39351, ~N[2026-06-17 11:05:46], ~N[2026-06-17 11:05:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307638, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:46], updated_at: ~N[2026-06-17 11:05:46]}} [2026-06-17 11:05:46.094] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:04:55Z", "value" => "UNKNOWN"} [2026-06-17 11:05:46.129] [DEBUG] QUERY OK db=34.3ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "UNKNOWN", "sim_imsi2", 39351, ~N[2026-06-17 11:05:46], ~N[2026-06-17 11:05:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307639, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:46], updated_at: ~N[2026-06-17 11:05:46]}} [2026-06-17 11:05:46.129] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:04:55Z", "value" => "7"} [2026-06-17 11:05:46.153] [DEBUG] QUERY OK db=23.1ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "7", "data_usage_mb", 39351, ~N[2026-06-17 11:05:46], ~N[2026-06-17 11:05:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307640, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:46], updated_at: ~N[2026-06-17 11:05:46]}} [2026-06-17 11:05:46.153] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:04:55Z", "value" => "0"} [2026-06-17 11:05:46.177] [DEBUG] QUERY OK db=23.0ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "0", "mobile_data_mb", 39351, ~N[2026-06-17 11:05:46], ~N[2026-06-17 11:05:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307641, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:46], updated_at: ~N[2026-06-17 11:05:46]}} [2026-06-17 11:05:46.178] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:04:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:46.201] [DEBUG] QUERY OK db=21.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:04:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39351, ~N[2026-06-17 11:05:46], ~N[2026-06-17 11:05:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:46.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307642, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:04:55Z", message: nil, status_log_id: 39351, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:46], updated_at: ~N[2026-06-17 11:05:46]}} [2026-06-17 11:05:51.821] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:51.822] [INFO ] Incoming JSON payload: {"oid":"50055c25-577b-4acb-8ca1-d68fb1d92059","sn":"98251226730002","uploadTime":"2026-06-17T11:05:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"ram_free_mb","value":"765","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05:01Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:51.823] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "50055c25-577b-4acb-8ca1-d68fb1d92059", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:01Z", "value" => "765"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:01Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:01Z", "vendor" => "morefun"} [2026-06-17 11:05:51.823] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:51.824] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:51.824] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:51.825] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=458.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-06-17 11:05:51.826] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=272.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-06-17 11:05:51.826] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:51.828] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:51.828] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:51.854] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:51.854] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:51.855] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:51.888] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:51.901] [DEBUG] QUERY OK db=12.7ms queue=0.1ms idle=33.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "50055c25-577b-4acb-8ca1-d68fb1d92059", "2026-06-17T11:05:01Z", ~N[2026-06-17 11:05:51], ~N[2026-06-17 11:05:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:51.901] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39352, oid: "50055c25-577b-4acb-8ca1-d68fb1d92059", upload_time: "2026-06-17T11:05:01Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:51], updated_at: ~N[2026-06-17 11:05:51]} [2026-06-17 11:05:51.901] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:01Z", "value" => "morefun"} [2026-06-17 11:05:51.935] [DEBUG] QUERY OK db=32.9ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "morefun", "vendor", 39352, ~N[2026-06-17 11:05:51], ~N[2026-06-17 11:05:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:51.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307643, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:51], updated_at: ~N[2026-06-17 11:05:51]}} [2026-06-17 11:05:51.935] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:01Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:51.959] [DEBUG] QUERY OK db=23.5ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "kiosk_launcher", "model", 39352, ~N[2026-06-17 11:05:51], ~N[2026-06-17 11:05:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:51.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307644, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:51], updated_at: ~N[2026-06-17 11:05:51]}} [2026-06-17 11:05:51.959] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:01Z", "value" => "1.0"} [2026-06-17 11:05:51.991] [DEBUG] QUERY OK db=31.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "1.0", "app_version", 39352, ~N[2026-06-17 11:05:51], ~N[2026-06-17 11:05:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:51.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307645, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:51], updated_at: ~N[2026-06-17 11:05:51]}} [2026-06-17 11:05:51.993] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:01Z", "value" => "13"} [2026-06-17 11:05:52.008] [DEBUG] QUERY OK db=15.2ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "13", "android_version", 39352, ~N[2026-06-17 11:05:51], ~N[2026-06-17 11:05:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307646, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:51], updated_at: ~N[2026-06-17 11:05:51]}} [2026-06-17 11:05:52.009] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:01Z", "value" => "765"} [2026-06-17 11:05:52.035] [DEBUG] QUERY OK db=25.2ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "765", "ram_free_mb", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307647, itemkey: "ram_free_mb", value: "765", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.038] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:01Z", "value" => "WIFI"} [2026-06-17 11:05:52.076] [DEBUG] QUERY OK db=37.6ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "WIFI", "network_type", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307648, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.079] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:01Z", "value" => "true"} [2026-06-17 11:05:52.102] [DEBUG] QUERY OK db=22.6ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "true", "kiosk_active", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307649, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.103] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:01Z", "value" => ""} [2026-06-17 11:05:52.122] [DEBUG] QUERY OK db=18.9ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:01Z", "sim_operator", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307650, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.123] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"} [2026-06-17 11:05:52.139] [DEBUG] QUERY OK db=15.8ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "UNKNOWN", "sim_number", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307651, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.140] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"} [2026-06-17 11:05:52.179] [DEBUG] QUERY OK db=38.4ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "UNKNOWN", "sim_iccid", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307652, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.179] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"} [2026-06-17 11:05:52.203] [DEBUG] QUERY OK db=23.7ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "UNKNOWN", "sim_imsi", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307653, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.204] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"} [2026-06-17 11:05:52.235] [DEBUG] QUERY OK db=29.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "UNKNOWN", "sim_iccid2", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307654, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.236] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:01Z", "value" => "UNKNOWN"} [2026-06-17 11:05:52.247] [DEBUG] QUERY OK db=11.0ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "UNKNOWN", "sim_imsi2", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307655, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.248] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:01Z", "value" => "7"} [2026-06-17 11:05:52.272] [DEBUG] QUERY OK db=23.3ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "7", "data_usage_mb", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307656, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.272] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:01Z", "value" => "0"} [2026-06-17 11:05:52.317] [DEBUG] QUERY OK db=44.3ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "0", "mobile_data_mb", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307657, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:52.318] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:52.396] [DEBUG] QUERY OK db=77.5ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39352, ~N[2026-06-17 11:05:52], ~N[2026-06-17 11:05:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:52.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307658, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:01Z", message: nil, status_log_id: 39352, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:52], updated_at: ~N[2026-06-17 11:05:52]}} [2026-06-17 11:05:57.895] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:05:57.896] [INFO ] Incoming JSON payload: {"oid":"2717ec0f-1f16-42ff-bce8-c90c91033175","sn":"98251226730002","uploadTime":"2026-06-17T11:05:07Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"ram_free_mb","value":"763","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:07Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:05:57.897] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2717ec0f-1f16-42ff-bce8-c90c91033175", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:07Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:07Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:07Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:07Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:07Z", "value" => "763"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:07Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:07Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:07Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:07Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:07Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:07Z", "vendor" => "morefun"} [2026-06-17 11:05:57.897] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:05:57.897] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:05:57.897] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:05:57.899] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1325.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:05:57.900] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=323.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-06-17 11:05:57.900] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:05:57.902] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:05:57.902] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:05:57.933] [DEBUG] QUERY OK source="tms_terminals" db=31.0ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:05:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:05:57.934] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:05:57.934] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=31.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:05:57.956] [DEBUG] QUERY OK source="tms_terminals" db=21.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:05:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:05:57.980] [DEBUG] QUERY OK db=23.8ms idle=21.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "2717ec0f-1f16-42ff-bce8-c90c91033175", "2026-06-17T11:05:07Z", ~N[2026-06-17 11:05:57], ~N[2026-06-17 11:05:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:05:57.981] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39353, oid: "2717ec0f-1f16-42ff-bce8-c90c91033175", upload_time: "2026-06-17T11:05:07Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:57], updated_at: ~N[2026-06-17 11:05:57]} [2026-06-17 11:05:57.981] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:07Z", "value" => "morefun"} [2026-06-17 11:05:58.008] [DEBUG] QUERY OK db=26.9ms queue=0.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "morefun", "vendor", 39353, ~N[2026-06-17 11:05:57], ~N[2026-06-17 11:05:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307659, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:57], updated_at: ~N[2026-06-17 11:05:57]}} [2026-06-17 11:05:58.009] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:07Z", "value" => "kiosk_launcher"} [2026-06-17 11:05:58.039] [DEBUG] QUERY OK db=30.2ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "kiosk_launcher", "model", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307660, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.040] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:07Z", "value" => "1.0"} [2026-06-17 11:05:58.061] [DEBUG] QUERY OK db=21.0ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "1.0", "app_version", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307661, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.061] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:07Z", "value" => "13"} [2026-06-17 11:05:58.088] [DEBUG] QUERY OK db=25.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "13", "android_version", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307662, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.089] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:07Z", "value" => "763"} [2026-06-17 11:05:58.113] [DEBUG] QUERY OK db=23.5ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "763", "ram_free_mb", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307663, itemkey: "ram_free_mb", value: "763", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.113] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:07Z", "value" => "WIFI"} [2026-06-17 11:05:58.137] [DEBUG] QUERY OK db=23.9ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "WIFI", "network_type", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307664, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.138] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:07Z", "value" => "true"} [2026-06-17 11:05:58.172] [DEBUG] QUERY OK db=32.8ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "true", "kiosk_active", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307665, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.172] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:07Z", "value" => ""} [2026-06-17 11:05:58.194] [DEBUG] QUERY OK db=21.8ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:07Z", "sim_operator", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307666, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.195] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"} [2026-06-17 11:05:58.219] [DEBUG] QUERY OK db=23.5ms queue=0.1ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "UNKNOWN", "sim_number", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307667, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.220] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"} [2026-06-17 11:05:58.254] [DEBUG] QUERY OK db=33.3ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "UNKNOWN", "sim_iccid", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307668, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.255] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"} [2026-06-17 11:05:58.282] [DEBUG] QUERY OK db=26.6ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "UNKNOWN", "sim_imsi", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307669, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.282] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"} [2026-06-17 11:05:58.302] [DEBUG] QUERY OK db=18.6ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "UNKNOWN", "sim_iccid2", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307670, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.302] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:07Z", "value" => "UNKNOWN"} [2026-06-17 11:05:58.349] [DEBUG] QUERY OK db=45.8ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "UNKNOWN", "sim_imsi2", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307671, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.349] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:07Z", "value" => "7"} [2026-06-17 11:05:58.388] [DEBUG] QUERY OK db=38.9ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "7", "data_usage_mb", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307672, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.389] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:07Z", "value" => "0"} [2026-06-17 11:05:58.427] [DEBUG] QUERY OK db=37.5ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:07Z", "0", "mobile_data_mb", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307673, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:05:58.428] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:05:58.460] [DEBUG] QUERY OK db=31.6ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39353, ~N[2026-06-17 11:05:58], ~N[2026-06-17 11:05:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:05:58.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307674, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:07Z", message: nil, status_log_id: 39353, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:05:58], updated_at: ~N[2026-06-17 11:05:58]}} [2026-06-17 11:06:04.255] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:04.255] [INFO ] Incoming JSON payload: {"oid":"4c5167f0-1207-4b81-96f4-ae67dddd9b12","sn":"98251226730002","uploadTime":"2026-06-17T11:05:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:06:04.259] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4c5167f0-1207-4b81-96f4-ae67dddd9b12", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:13Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:13Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:13Z", "vendor" => "morefun"} [2026-06-17 11:06:04.259] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:04.259] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:04.259] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:04.261] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms queue=0.2ms idle=1648.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-06-17 11:06:04.265] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=645.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.`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-06-17 11:06:04.265] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:04.266] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:04.266] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:04.287] [DEBUG] QUERY OK source="tms_terminals" db=19.9ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:04.287] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:04.288] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:04.310] [DEBUG] QUERY OK source="tms_terminals" db=21.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:04.346] [DEBUG] QUERY OK db=30.8ms queue=3.9ms idle=21.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4c5167f0-1207-4b81-96f4-ae67dddd9b12", "2026-06-17T11:05:13Z", ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:04.348] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39354, oid: "4c5167f0-1207-4b81-96f4-ae67dddd9b12", upload_time: "2026-06-17T11:05:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]} [2026-06-17 11:06:04.348] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:13Z", "value" => "morefun"} [2026-06-17 11:06:04.389] [DEBUG] QUERY OK db=40.9ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "morefun", "vendor", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307675, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.390] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:13Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:04.407] [DEBUG] QUERY OK db=17.0ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "kiosk_launcher", "model", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307676, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.408] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:13Z", "value" => "1.0"} [2026-06-17 11:06:04.444] [DEBUG] QUERY OK db=35.7ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "1.0", "app_version", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307677, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.444] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:13Z", "value" => "13"} [2026-06-17 11:06:04.474] [DEBUG] QUERY OK db=29.5ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "13", "android_version", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307678, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.475] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:13Z", "value" => "764"} [2026-06-17 11:06:04.504] [DEBUG] QUERY OK db=29.0ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "764", "ram_free_mb", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307679, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.504] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:13Z", "value" => "WIFI"} [2026-06-17 11:06:04.531] [DEBUG] QUERY OK db=17.4ms queue=0.1ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "WIFI", "network_type", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307680, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.532] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:13Z", "value" => "true"} [2026-06-17 11:06:04.575] [DEBUG] QUERY OK db=27.8ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "true", "kiosk_active", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307681, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.575] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:13Z", "value" => ""} [2026-06-17 11:06:04.601] [DEBUG] QUERY OK db=25.0ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:13Z", "sim_operator", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307682, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.601] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"} [2026-06-17 11:06:04.629] [DEBUG] QUERY OK db=26.5ms queue=1.2ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "UNKNOWN", "sim_number", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307683, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.630] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"} [2026-06-17 11:06:04.647] [DEBUG] QUERY OK db=17.2ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "UNKNOWN", "sim_iccid", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307684, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.649] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"} [2026-06-17 11:06:04.679] [DEBUG] QUERY OK db=29.5ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "UNKNOWN", "sim_imsi", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307685, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.679] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"} [2026-06-17 11:06:04.715] [DEBUG] QUERY OK db=35.2ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "UNKNOWN", "sim_iccid2", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307686, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.719] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:13Z", "value" => "UNKNOWN"} [2026-06-17 11:06:04.746] [DEBUG] QUERY OK db=26.2ms queue=0.1ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "UNKNOWN", "sim_imsi2", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307687, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.746] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:13Z", "value" => "7"} [2026-06-17 11:06:04.760] [DEBUG] QUERY OK db=13.7ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "7", "data_usage_mb", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307688, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.761] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:13Z", "value" => "0"} [2026-06-17 11:06:04.779] [DEBUG] QUERY OK db=16.2ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "0", "mobile_data_mb", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307689, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:04.783] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:04.815] [DEBUG] QUERY OK db=30.3ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39354, ~N[2026-06-17 11:06:04], ~N[2026-06-17 11:06:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:04.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307690, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:13Z", message: nil, status_log_id: 39354, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:04], updated_at: ~N[2026-06-17 11:06:04]}} [2026-06-17 11:06:10.486] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:10.487] [INFO ] Incoming JSON payload: {"oid":"92be333c-9a09-44ac-813d-44e2cad6dd52","sn":"98251226730002","uploadTime":"2026-06-17T11:05:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"ram_free_mb","value":"849","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:06:10.493] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "92be333c-9a09-44ac-813d-44e2cad6dd52", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:20Z", "value" => "849"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:20Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:20Z", "vendor" => "morefun"} [2026-06-17 11:06:10.493] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:10.494] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:10.494] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:10.501] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=3.0ms idle=845.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-06-17 11:06:10.501] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=119.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-06-17 11:06:10.502] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:10.504] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:10.504] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:10.533] [DEBUG] QUERY OK source="tms_terminals" db=28.5ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:10.533] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:10.538] [DEBUG] QUERY OK source="tms_terminals" db=4.7ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:10.568] [DEBUG] QUERY OK source="tms_terminals" db=28.1ms idle=7.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:10.600] [DEBUG] QUERY OK db=30.4ms idle=32.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "92be333c-9a09-44ac-813d-44e2cad6dd52", "2026-06-17T11:05:20Z", ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:10.601] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39355, oid: "92be333c-9a09-44ac-813d-44e2cad6dd52", upload_time: "2026-06-17T11:05:20Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]} [2026-06-17 11:06:10.601] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:20Z", "value" => "morefun"} [2026-06-17 11:06:10.615] [DEBUG] QUERY OK db=14.3ms queue=0.1ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "morefun", "vendor", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307691, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.616] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:20Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:10.639] [DEBUG] QUERY OK db=22.4ms queue=0.1ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "kiosk_launcher", "model", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307692, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.639] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:20Z", "value" => "1.0"} [2026-06-17 11:06:10.666] [DEBUG] QUERY OK db=26.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "1.0", "app_version", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307693, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.667] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:20Z", "value" => "13"} [2026-06-17 11:06:10.692] [DEBUG] QUERY OK db=23.3ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "13", "android_version", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307694, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.693] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:20Z", "value" => "849"} [2026-06-17 11:06:10.723] [DEBUG] QUERY OK db=30.1ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "849", "ram_free_mb", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307695, itemkey: "ram_free_mb", value: "849", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.723] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:20Z", "value" => "WIFI"} [2026-06-17 11:06:10.739] [DEBUG] QUERY OK db=15.5ms queue=0.2ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "WIFI", "network_type", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307696, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.740] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:20Z", "value" => "true"} [2026-06-17 11:06:10.774] [DEBUG] QUERY OK db=34.3ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "true", "kiosk_active", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307697, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.775] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:20Z", "value" => ""} [2026-06-17 11:06:10.800] [DEBUG] QUERY OK db=23.9ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:20Z", "sim_operator", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307698, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.801] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"} [2026-06-17 11:06:10.833] [DEBUG] QUERY OK db=30.7ms queue=0.7ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "UNKNOWN", "sim_number", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307699, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.833] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"} [2026-06-17 11:06:10.847] [DEBUG] QUERY OK db=13.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "UNKNOWN", "sim_iccid", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307700, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.847] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"} [2026-06-17 11:06:10.870] [DEBUG] QUERY OK db=20.2ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "UNKNOWN", "sim_imsi", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307701, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.871] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"} [2026-06-17 11:06:10.905] [DEBUG] QUERY OK db=33.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "UNKNOWN", "sim_iccid2", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307702, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.905] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:20Z", "value" => "UNKNOWN"} [2026-06-17 11:06:10.939] [DEBUG] QUERY OK db=33.3ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "UNKNOWN", "sim_imsi2", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307703, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.940] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:20Z", "value" => "7"} [2026-06-17 11:06:10.954] [DEBUG] QUERY OK db=13.9ms queue=0.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "7", "data_usage_mb", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307704, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.956] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:20Z", "value" => "0"} [2026-06-17 11:06:10.982] [DEBUG] QUERY OK db=25.7ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:20Z", "0", "mobile_data_mb", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:10.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307705, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:10.983] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:11.008] [DEBUG] QUERY OK db=23.3ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39355, ~N[2026-06-17 11:06:10], ~N[2026-06-17 11:06:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:11.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307706, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:20Z", message: nil, status_log_id: 39355, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:10], updated_at: ~N[2026-06-17 11:06:10]}} [2026-06-17 11:06:16.803] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:16.803] [INFO ] Incoming JSON payload: {"oid":"06c8b820-be32-48ee-a263-f6d708f7e5a8","sn":"98251226730002","uploadTime":"2026-06-17T11:05:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"ram_free_mb","value":"848","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:06:16.804] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "06c8b820-be32-48ee-a263-f6d708f7e5a8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:26Z", "value" => "848"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:26Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:26Z", "vendor" => "morefun"} [2026-06-17 11:06:16.804] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:16.805] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:16.805] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:16.807] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.1ms idle=423.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:06:16.808] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=129.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-06-17 11:06:16.808] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:16.810] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:16.810] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:16.850] [DEBUG] QUERY OK source="tms_terminals" db=39.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:16.850] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:16.852] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=41.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:16.876] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:16.901] [DEBUG] QUERY OK db=24.7ms idle=23.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "06c8b820-be32-48ee-a263-f6d708f7e5a8", "2026-06-17T11:05:26Z", ~N[2026-06-17 11:06:16], ~N[2026-06-17 11:06:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:16.901] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39356, oid: "06c8b820-be32-48ee-a263-f6d708f7e5a8", upload_time: "2026-06-17T11:05:26Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:16], updated_at: ~N[2026-06-17 11:06:16]} [2026-06-17 11:06:16.901] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:26Z", "value" => "morefun"} [2026-06-17 11:06:16.924] [DEBUG] QUERY OK db=22.4ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "morefun", "vendor", 39356, ~N[2026-06-17 11:06:16], ~N[2026-06-17 11:06:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:16.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307707, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:16], updated_at: ~N[2026-06-17 11:06:16]}} [2026-06-17 11:06:16.925] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:26Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:16.964] [DEBUG] QUERY OK db=39.2ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "kiosk_launcher", "model", 39356, ~N[2026-06-17 11:06:16], ~N[2026-06-17 11:06:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:16.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307708, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:16], updated_at: ~N[2026-06-17 11:06:16]}} [2026-06-17 11:06:16.965] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:26Z", "value" => "1.0"} [2026-06-17 11:06:16.991] [DEBUG] QUERY OK db=26.5ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "1.0", "app_version", 39356, ~N[2026-06-17 11:06:16], ~N[2026-06-17 11:06:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:16.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307709, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:16], updated_at: ~N[2026-06-17 11:06:16]}} [2026-06-17 11:06:16.992] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:26Z", "value" => "13"} [2026-06-17 11:06:17.015] [DEBUG] QUERY OK db=22.8ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "13", "android_version", 39356, ~N[2026-06-17 11:06:16], ~N[2026-06-17 11:06:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307710, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:16], updated_at: ~N[2026-06-17 11:06:16]}} [2026-06-17 11:06:17.015] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:26Z", "value" => "848"} [2026-06-17 11:06:17.033] [DEBUG] QUERY OK db=16.8ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "848", "ram_free_mb", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307711, itemkey: "ram_free_mb", value: "848", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.033] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:26Z", "value" => "WIFI"} [2026-06-17 11:06:17.067] [DEBUG] QUERY OK db=32.5ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "WIFI", "network_type", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307712, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.067] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:26Z", "value" => "true"} [2026-06-17 11:06:17.094] [DEBUG] QUERY OK db=25.1ms queue=0.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "true", "kiosk_active", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307713, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.094] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:26Z", "value" => ""} [2026-06-17 11:06:17.127] [DEBUG] QUERY OK db=31.4ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:26Z", "sim_operator", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307714, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.127] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"} [2026-06-17 11:06:17.152] [DEBUG] QUERY OK db=24.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "UNKNOWN", "sim_number", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307715, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.153] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"} [2026-06-17 11:06:17.185] [DEBUG] QUERY OK db=30.7ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "UNKNOWN", "sim_iccid", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307716, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.185] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"} [2026-06-17 11:06:17.209] [DEBUG] QUERY OK db=22.9ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "UNKNOWN", "sim_imsi", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307717, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.210] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"} [2026-06-17 11:06:17.248] [DEBUG] QUERY OK db=37.5ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "UNKNOWN", "sim_iccid2", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307718, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.248] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:26Z", "value" => "UNKNOWN"} [2026-06-17 11:06:17.266] [DEBUG] QUERY OK db=17.6ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "UNKNOWN", "sim_imsi2", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307719, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.267] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:26Z", "value" => "7"} [2026-06-17 11:06:17.288] [DEBUG] QUERY OK db=20.3ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "7", "data_usage_mb", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307720, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.288] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:26Z", "value" => "0"} [2026-06-17 11:06:17.330] [DEBUG] QUERY OK db=41.7ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:26Z", "0", "mobile_data_mb", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307721, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:17.331] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:17.356] [DEBUG] QUERY OK db=24.0ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39356, ~N[2026-06-17 11:06:17], ~N[2026-06-17 11:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:17.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307722, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:26Z", message: nil, status_log_id: 39356, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:17], updated_at: ~N[2026-06-17 11:06:17]}} [2026-06-17 11:06:22.706] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:22.706] [INFO ] Incoming JSON payload: {"oid":"ae1e911d-3137-41f1-ae86-c54e78e21c5b","sn":"98251226730002","uploadTime":"2026-06-17T11:05:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"ram_free_mb","value":"847","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05:32Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:06:22.707] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ae1e911d-3137-41f1-ae86-c54e78e21c5b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:32Z", "value" => "847"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:32Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:32Z", "vendor" => "morefun"} [2026-06-17 11:06:22.707] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:22.707] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:22.707] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:22.708] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=326.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-06-17 11:06:22.710] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=15.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-06-17 11:06:22.710] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:22.711] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:22.711] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:22.728] [DEBUG] QUERY OK source="tms_terminals" db=17.0ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:22.728] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:22.730] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=17.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:22.765] [DEBUG] QUERY OK source="tms_terminals" db=34.6ms queue=0.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:22.789] [DEBUG] QUERY OK db=23.9ms idle=35.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ae1e911d-3137-41f1-ae86-c54e78e21c5b", "2026-06-17T11:05:32Z", ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:22.789] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39357, oid: "ae1e911d-3137-41f1-ae86-c54e78e21c5b", upload_time: "2026-06-17T11:05:32Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]} [2026-06-17 11:06:22.790] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:32Z", "value" => "morefun"} [2026-06-17 11:06:22.812] [DEBUG] QUERY OK db=21.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "morefun", "vendor", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:22.813] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307723, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:22.813] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:32Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:22.827] [DEBUG] QUERY OK db=13.4ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "kiosk_launcher", "model", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:22.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307724, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:22.828] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:32Z", "value" => "1.0"} [2026-06-17 11:06:22.849] [DEBUG] QUERY OK db=18.7ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "1.0", "app_version", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:22.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307725, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:22.849] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:32Z", "value" => "13"} [2026-06-17 11:06:22.872] [DEBUG] QUERY OK db=22.9ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "13", "android_version", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:22.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307726, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:22.873] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:32Z", "value" => "847"} [2026-06-17 11:06:22.905] [DEBUG] QUERY OK db=29.9ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "847", "ram_free_mb", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:22.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307727, itemkey: "ram_free_mb", value: "847", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:22.907] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:32Z", "value" => "WIFI"} [2026-06-17 11:06:22.924] [DEBUG] QUERY OK db=17.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "WIFI", "network_type", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:22.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307728, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:22.925] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:32Z", "value" => "true"} [2026-06-17 11:06:22.948] [DEBUG] QUERY OK db=22.9ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "true", "kiosk_active", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:22.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307729, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:22.948] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:32Z", "value" => ""} [2026-06-17 11:06:22.974] [DEBUG] QUERY OK db=25.6ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:32Z", "sim_operator", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:22.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307730, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:22.975] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"} [2026-06-17 11:06:23.008] [DEBUG] QUERY OK db=32.5ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "UNKNOWN", "sim_number", 39357, ~N[2026-06-17 11:06:22], ~N[2026-06-17 11:06:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:23.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307731, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:22], updated_at: ~N[2026-06-17 11:06:22]}} [2026-06-17 11:06:23.008] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"} [2026-06-17 11:06:23.024] [DEBUG] QUERY OK db=15.4ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "UNKNOWN", "sim_iccid", 39357, ~N[2026-06-17 11:06:23], ~N[2026-06-17 11:06:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:23.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307732, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:23], updated_at: ~N[2026-06-17 11:06:23]}} [2026-06-17 11:06:23.025] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"} [2026-06-17 11:06:23.044] [DEBUG] QUERY OK db=19.3ms queue=0.1ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "UNKNOWN", "sim_imsi", 39357, ~N[2026-06-17 11:06:23], ~N[2026-06-17 11:06:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:23.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307733, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:23], updated_at: ~N[2026-06-17 11:06:23]}} [2026-06-17 11:06:23.045] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"} [2026-06-17 11:06:23.078] [DEBUG] QUERY OK db=32.8ms idle=0.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "UNKNOWN", "sim_iccid2", 39357, ~N[2026-06-17 11:06:23], ~N[2026-06-17 11:06:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:23.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307734, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:23], updated_at: ~N[2026-06-17 11:06:23]}} [2026-06-17 11:06:23.079] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:32Z", "value" => "UNKNOWN"} [2026-06-17 11:06:23.113] [DEBUG] QUERY OK db=33.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "UNKNOWN", "sim_imsi2", 39357, ~N[2026-06-17 11:06:23], ~N[2026-06-17 11:06:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:23.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307735, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:23], updated_at: ~N[2026-06-17 11:06:23]}} [2026-06-17 11:06:23.113] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:32Z", "value" => "7"} [2026-06-17 11:06:23.128] [DEBUG] QUERY OK db=14.4ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "7", "data_usage_mb", 39357, ~N[2026-06-17 11:06:23], ~N[2026-06-17 11:06:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:23.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307736, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:23], updated_at: ~N[2026-06-17 11:06:23]}} [2026-06-17 11:06:23.129] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:32Z", "value" => "0"} [2026-06-17 11:06:23.143] [DEBUG] QUERY OK db=13.7ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "0", "mobile_data_mb", 39357, ~N[2026-06-17 11:06:23], ~N[2026-06-17 11:06:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:23.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307737, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:23], updated_at: ~N[2026-06-17 11:06:23]}} [2026-06-17 11:06:23.145] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:23.168] [DEBUG] QUERY OK db=22.5ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39357, ~N[2026-06-17 11:06:23], ~N[2026-06-17 11:06:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:23.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307738, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:32Z", message: nil, status_log_id: 39357, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:23], updated_at: ~N[2026-06-17 11:06:23]}} [2026-06-17 11:06:28.779] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:28.779] [INFO ] Incoming JSON payload: {"oid":"c08a7640-a25c-4f6e-98eb-94db9f442411","sn":"98251226730002","uploadTime":"2026-06-17T11:05:38Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"ram_free_mb","value":"846","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:38Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05:38Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:06:28.781] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c08a7640-a25c-4f6e-98eb-94db9f442411", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:38Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:38Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:38Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:38Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:38Z", "value" => "846"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:38Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:38Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:38Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:38Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:38Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:38Z", "vendor" => "morefun"} [2026-06-17 11:06:28.781] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:28.781] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:28.781] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:28.788] [DEBUG] QUERY OK source="parameter_templates" db=6.8ms idle=398.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-06-17 11:06:28.789] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=77.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.`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-06-17 11:06:28.790] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:28.793] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:28.793] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:28.807] [DEBUG] QUERY OK source="tms_terminals" db=13.0ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:28.808] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:28.810] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:28.845] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms queue=0.2ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:28.865] [DEBUG] QUERY OK db=19.9ms queue=0.2ms idle=35.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c08a7640-a25c-4f6e-98eb-94db9f442411", "2026-06-17T11:05:38Z", ~N[2026-06-17 11:06:28], ~N[2026-06-17 11:06:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:28.868] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39358, oid: "c08a7640-a25c-4f6e-98eb-94db9f442411", upload_time: "2026-06-17T11:05:38Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:28], updated_at: ~N[2026-06-17 11:06:28]} [2026-06-17 11:06:28.869] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:38Z", "value" => "morefun"} [2026-06-17 11:06:28.888] [DEBUG] QUERY OK db=18.3ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "morefun", "vendor", 39358, ~N[2026-06-17 11:06:28], ~N[2026-06-17 11:06:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:28.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307739, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:28], updated_at: ~N[2026-06-17 11:06:28]}} [2026-06-17 11:06:28.889] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:38Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:28.920] [DEBUG] QUERY OK db=30.3ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "kiosk_launcher", "model", 39358, ~N[2026-06-17 11:06:28], ~N[2026-06-17 11:06:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:28.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307740, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:28], updated_at: ~N[2026-06-17 11:06:28]}} [2026-06-17 11:06:28.924] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:38Z", "value" => "1.0"} [2026-06-17 11:06:28.950] [DEBUG] QUERY OK db=26.1ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "1.0", "app_version", 39358, ~N[2026-06-17 11:06:28], ~N[2026-06-17 11:06:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:28.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307741, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:28], updated_at: ~N[2026-06-17 11:06:28]}} [2026-06-17 11:06:28.951] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:38Z", "value" => "13"} [2026-06-17 11:06:28.969] [DEBUG] QUERY OK db=18.4ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "13", "android_version", 39358, ~N[2026-06-17 11:06:28], ~N[2026-06-17 11:06:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:28.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307742, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:28], updated_at: ~N[2026-06-17 11:06:28]}} [2026-06-17 11:06:28.970] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:38Z", "value" => "846"} [2026-06-17 11:06:28.985] [DEBUG] QUERY OK db=14.3ms queue=0.1ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "846", "ram_free_mb", 39358, ~N[2026-06-17 11:06:28], ~N[2026-06-17 11:06:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:28.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307743, itemkey: "ram_free_mb", value: "846", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:28], updated_at: ~N[2026-06-17 11:06:28]}} [2026-06-17 11:06:28.985] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:38Z", "value" => "WIFI"} [2026-06-17 11:06:29.009] [DEBUG] QUERY OK db=23.2ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "WIFI", "network_type", 39358, ~N[2026-06-17 11:06:28], ~N[2026-06-17 11:06:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307744, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:28], updated_at: ~N[2026-06-17 11:06:28]}} [2026-06-17 11:06:29.009] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:38Z", "value" => "true"} [2026-06-17 11:06:29.032] [DEBUG] QUERY OK db=23.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "true", "kiosk_active", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307745, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.033] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:38Z", "value" => ""} [2026-06-17 11:06:29.059] [DEBUG] QUERY OK db=25.5ms queue=0.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:38Z", "sim_operator", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307746, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.059] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"} [2026-06-17 11:06:29.072] [DEBUG] QUERY OK db=12.7ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "UNKNOWN", "sim_number", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307747, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.073] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"} [2026-06-17 11:06:29.087] [DEBUG] QUERY OK db=13.9ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "UNKNOWN", "sim_iccid", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307748, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.087] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"} [2026-06-17 11:06:29.115] [DEBUG] QUERY OK db=26.0ms queue=1.8ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "UNKNOWN", "sim_imsi", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307749, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.116] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"} [2026-06-17 11:06:29.140] [DEBUG] QUERY OK db=23.1ms queue=0.2ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "UNKNOWN", "sim_iccid2", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307750, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.140] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:38Z", "value" => "UNKNOWN"} [2026-06-17 11:06:29.172] [DEBUG] QUERY OK db=31.7ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "UNKNOWN", "sim_imsi2", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307751, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.173] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:38Z", "value" => "7"} [2026-06-17 11:06:29.192] [DEBUG] QUERY OK db=18.4ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "7", "data_usage_mb", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307752, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.192] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:38Z", "value" => "0"} [2026-06-17 11:06:29.208] [DEBUG] QUERY OK db=15.5ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "0", "mobile_data_mb", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307753, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:29.209] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:29.249] [DEBUG] QUERY OK db=38.8ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39358, ~N[2026-06-17 11:06:29], ~N[2026-06-17 11:06:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:29.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307754, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:38Z", message: nil, status_log_id: 39358, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:29], updated_at: ~N[2026-06-17 11:06:29]}} [2026-06-17 11:06:34.962] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:34.963] [INFO ] Incoming JSON payload: {"oid":"155b0433-b4da-4187-bdf5-008fe791dc6a","sn":"98251226730002","uploadTime":"2026-06-17T11:05:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"ram_free_mb","value":"845","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:06:34.963] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "155b0433-b4da-4187-bdf5-008fe791dc6a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:44Z", "value" => "845"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:44Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:44Z", "vendor" => "morefun"} [2026-06-17 11:06:34.964] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:34.964] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:34.964] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:34.964] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=578.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-06-17 11:06:34.965] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=235.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-06-17 11:06:34.965] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:34.966] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:34.966] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:34.989] [DEBUG] QUERY OK source="tms_terminals" db=22.2ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:34.989] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:34.990] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:35.003] [DEBUG] QUERY OK source="tms_terminals" db=12.8ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:35.021] [DEBUG] QUERY OK db=17.5ms idle=13.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "155b0433-b4da-4187-bdf5-008fe791dc6a", "2026-06-17T11:05:44Z", ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:35.022] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39359, oid: "155b0433-b4da-4187-bdf5-008fe791dc6a", upload_time: "2026-06-17T11:05:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]} [2026-06-17 11:06:35.022] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:44Z", "value" => "morefun"} [2026-06-17 11:06:35.045] [DEBUG] QUERY OK db=22.6ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "morefun", "vendor", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307755, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.046] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:44Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:35.081] [DEBUG] QUERY OK db=35.3ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "kiosk_launcher", "model", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307756, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.082] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:44Z", "value" => "1.0"} [2026-06-17 11:06:35.100] [DEBUG] QUERY OK db=18.3ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "1.0", "app_version", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307757, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.101] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:44Z", "value" => "13"} [2026-06-17 11:06:35.119] [DEBUG] QUERY OK db=17.6ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "13", "android_version", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307758, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.121] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:44Z", "value" => "845"} [2026-06-17 11:06:35.147] [DEBUG] QUERY OK db=25.2ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "845", "ram_free_mb", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307759, itemkey: "ram_free_mb", value: "845", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.147] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:44Z", "value" => "WIFI"} [2026-06-17 11:06:35.183] [DEBUG] QUERY OK db=35.6ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "WIFI", "network_type", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307760, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.184] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:44Z", "value" => "true"} [2026-06-17 11:06:35.211] [DEBUG] QUERY OK db=24.6ms queue=0.5ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "true", "kiosk_active", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307761, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.212] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:44Z", "value" => ""} [2026-06-17 11:06:35.224] [DEBUG] QUERY OK db=12.0ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:44Z", "sim_operator", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307762, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.225] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"} [2026-06-17 11:06:35.248] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "UNKNOWN", "sim_number", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307763, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.248] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"} [2026-06-17 11:06:35.275] [DEBUG] QUERY OK db=25.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "UNKNOWN", "sim_iccid", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307764, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.275] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"} [2026-06-17 11:06:35.296] [DEBUG] QUERY OK db=20.7ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "UNKNOWN", "sim_imsi", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307765, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.296] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"} [2026-06-17 11:06:35.337] [DEBUG] QUERY OK db=39.9ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "UNKNOWN", "sim_iccid2", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307766, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.337] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:44Z", "value" => "UNKNOWN"} [2026-06-17 11:06:35.375] [DEBUG] QUERY OK db=37.6ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "UNKNOWN", "sim_imsi2", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307767, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.375] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:44Z", "value" => "7"} [2026-06-17 11:06:35.406] [DEBUG] QUERY OK db=30.1ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "7", "data_usage_mb", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307768, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.406] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:44Z", "value" => "0"} [2026-06-17 11:06:35.423] [DEBUG] QUERY OK db=16.5ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:44Z", "0", "mobile_data_mb", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307769, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:35.426] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:35.458] [DEBUG] QUERY OK db=31.0ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39359, ~N[2026-06-17 11:06:35], ~N[2026-06-17 11:06:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:35.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307770, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:44Z", message: nil, status_log_id: 39359, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:35], updated_at: ~N[2026-06-17 11:06:35]}} [2026-06-17 11:06:41.211] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:41.211] [INFO ] Incoming JSON payload: {"oid":"e0b4c0bd-271a-4235-8d4f-ef66e11cc33a","sn":"98251226730002","uploadTime":"2026-06-17T11:05:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"ram_free_mb","value":"847","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05:50Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:06:41.212] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e0b4c0bd-271a-4235-8d4f-ef66e11cc33a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:50Z", "value" => "847"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:50Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:50Z", "vendor" => "morefun"} [2026-06-17 11:06:41.212] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:41.212] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:41.212] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:41.223] [DEBUG] QUERY OK source="parameter_templates" db=10.8ms idle=827.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-06-17 11:06:41.227] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=475.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.`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-06-17 11:06:41.227] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:41.228] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:41.228] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:41.243] [DEBUG] QUERY OK source="tms_terminals" db=14.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:41.243] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:41.247] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:41.278] [DEBUG] QUERY OK source="tms_terminals" db=30.3ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:41], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:41.312] [DEBUG] QUERY OK db=33.6ms idle=32.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e0b4c0bd-271a-4235-8d4f-ef66e11cc33a", "2026-06-17T11:05:50Z", ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:41.312] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39360, oid: "e0b4c0bd-271a-4235-8d4f-ef66e11cc33a", upload_time: "2026-06-17T11:05:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]} [2026-06-17 11:06:41.312] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:50Z", "value" => "morefun"} [2026-06-17 11:06:41.333] [DEBUG] QUERY OK db=19.7ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "morefun", "vendor", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307771, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.333] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:50Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:41.384] [DEBUG] QUERY OK db=50.4ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "kiosk_launcher", "model", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307772, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.385] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:50Z", "value" => "1.0"} [2026-06-17 11:06:41.408] [DEBUG] QUERY OK db=22.7ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "1.0", "app_version", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307773, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.408] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:50Z", "value" => "13"} [2026-06-17 11:06:41.420] [DEBUG] QUERY OK db=11.5ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "13", "android_version", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307774, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.420] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:50Z", "value" => "847"} [2026-06-17 11:06:41.434] [DEBUG] QUERY OK db=13.1ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "847", "ram_free_mb", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307775, itemkey: "ram_free_mb", value: "847", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.434] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:50Z", "value" => "WIFI"} [2026-06-17 11:06:41.459] [DEBUG] QUERY OK db=24.2ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "WIFI", "network_type", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307776, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.459] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:50Z", "value" => "true"} [2026-06-17 11:06:41.493] [DEBUG] QUERY OK db=32.4ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "true", "kiosk_active", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307777, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.493] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:50Z", "value" => ""} [2026-06-17 11:06:41.514] [DEBUG] QUERY OK db=19.8ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:50Z", "sim_operator", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307778, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.514] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"} [2026-06-17 11:06:41.532] [DEBUG] QUERY OK db=17.6ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "UNKNOWN", "sim_number", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307779, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.532] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"} [2026-06-17 11:06:41.563] [DEBUG] QUERY OK db=30.3ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "UNKNOWN", "sim_iccid", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307780, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.563] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"} [2026-06-17 11:06:41.600] [DEBUG] QUERY OK db=36.0ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "UNKNOWN", "sim_imsi", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307781, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.601] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"} [2026-06-17 11:06:41.623] [DEBUG] QUERY OK db=20.6ms queue=0.1ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "UNKNOWN", "sim_iccid2", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307782, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.624] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:50Z", "value" => "UNKNOWN"} [2026-06-17 11:06:41.642] [DEBUG] QUERY OK db=17.8ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "UNKNOWN", "sim_imsi2", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307783, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.642] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:50Z", "value" => "7"} [2026-06-17 11:06:41.666] [DEBUG] QUERY OK db=23.6ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "7", "data_usage_mb", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307784, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.667] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:50Z", "value" => "0"} [2026-06-17 11:06:41.702] [DEBUG] QUERY OK db=34.0ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "0", "mobile_data_mb", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307785, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:41.702] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:41.721] [DEBUG] QUERY OK db=17.7ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39360, ~N[2026-06-17 11:06:41], ~N[2026-06-17 11:06:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:41.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307786, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:50Z", message: nil, status_log_id: 39360, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:41], updated_at: ~N[2026-06-17 11:06:41]}} [2026-06-17 11:06:47.284] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:47.284] [INFO ] Incoming JSON payload: {"oid":"aa75509a-b266-4923-9a44-7aacd2d0badc","sn":"98251226730002","uploadTime":"2026-06-17T11:05:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"ram_free_mb","value":"844","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:05:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:05:57Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:06:47.286] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "aa75509a-b266-4923-9a44-7aacd2d0badc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:57Z", "value" => "844"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:57Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:05:57Z", "vendor" => "morefun"} [2026-06-17 11:06:47.286] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:47.287] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:47.287] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:47.288] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=901.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-06-17 11:06:47.289] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=524.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.`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-06-17 11:06:47.289] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:47.290] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:47.290] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:47.336] [DEBUG] QUERY OK source="tms_terminals" db=45.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:47.336] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:47.338] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=46.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:47.356] [DEBUG] QUERY OK source="tms_terminals" db=17.9ms queue=0.2ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:47.378] [DEBUG] QUERY OK db=21.1ms idle=18.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "aa75509a-b266-4923-9a44-7aacd2d0badc", "2026-06-17T11:05:57Z", ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:47.378] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39361, oid: "aa75509a-b266-4923-9a44-7aacd2d0badc", upload_time: "2026-06-17T11:05:57Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]} [2026-06-17 11:06:47.378] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:05:57Z", "value" => "morefun"} [2026-06-17 11:06:47.402] [DEBUG] QUERY OK db=23.5ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "morefun", "vendor", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307787, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.403] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:05:57Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:47.426] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "kiosk_launcher", "model", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307788, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.427] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:05:57Z", "value" => "1.0"} [2026-06-17 11:06:47.451] [DEBUG] QUERY OK db=23.3ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "1.0", "app_version", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307789, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.451] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:05:57Z", "value" => "13"} [2026-06-17 11:06:47.479] [DEBUG] QUERY OK db=27.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "13", "android_version", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307790, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.479] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:05:57Z", "value" => "844"} [2026-06-17 11:06:47.500] [DEBUG] QUERY OK db=20.3ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "844", "ram_free_mb", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307791, itemkey: "ram_free_mb", value: "844", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.500] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:05:57Z", "value" => "WIFI"} [2026-06-17 11:06:47.529] [DEBUG] QUERY OK db=28.2ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "WIFI", "network_type", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307792, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.529] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:05:57Z", "value" => "true"} [2026-06-17 11:06:47.563] [DEBUG] QUERY OK db=33.5ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "true", "kiosk_active", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307793, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.563] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:05:57Z", "value" => ""} [2026-06-17 11:06:47.586] [DEBUG] QUERY OK db=22.5ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:05:57Z", "sim_operator", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307794, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.587] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"} [2026-06-17 11:06:47.614] [DEBUG] QUERY OK db=25.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "UNKNOWN", "sim_number", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307795, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.614] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"} [2026-06-17 11:06:47.639] [DEBUG] QUERY OK db=24.5ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "UNKNOWN", "sim_iccid", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307796, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.639] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"} [2026-06-17 11:06:47.663] [DEBUG] QUERY OK db=22.2ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "UNKNOWN", "sim_imsi", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307797, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.663] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"} [2026-06-17 11:06:47.715] [DEBUG] QUERY OK db=52.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "UNKNOWN", "sim_iccid2", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307798, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.716] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:05:57Z", "value" => "UNKNOWN"} [2026-06-17 11:06:47.741] [DEBUG] QUERY OK db=25.2ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "UNKNOWN", "sim_imsi2", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307799, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.742] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:05:57Z", "value" => "7"} [2026-06-17 11:06:47.767] [DEBUG] QUERY OK db=24.8ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "7", "data_usage_mb", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307800, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.770] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:05:57Z", "value" => "0"} [2026-06-17 11:06:47.804] [DEBUG] QUERY OK db=34.1ms idle=2.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "0", "mobile_data_mb", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307801, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:47.805] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:05:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:47.835] [DEBUG] QUERY OK db=28.4ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:05:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39361, ~N[2026-06-17 11:06:47], ~N[2026-06-17 11:06:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:47.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307802, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:05:57Z", message: nil, status_log_id: 39361, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:47], updated_at: ~N[2026-06-17 11:06:47]}} [2026-06-17 11:06:53.373] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:53.374] [INFO ] Incoming JSON payload: {"oid":"46634c03-52b4-4e24-b642-7beca79b8cb4","sn":"98251226730002","uploadTime":"2026-06-17T11:06:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"ram_free_mb","value":"844","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:03Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:06:53.375] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "46634c03-52b4-4e24-b642-7beca79b8cb4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:03Z", "value" => "844"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:03Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:03Z", "vendor" => "morefun"} [2026-06-17 11:06:53.375] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:53.375] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:53.375] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:53.376] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=989.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:06:53.376] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.2ms idle=595.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.`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-06-17 11:06:53.376] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:53.380] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.5ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:53.380] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:53.404] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:53.405] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:53.406] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:53.431] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:53.452] [DEBUG] QUERY OK db=20.4ms queue=0.1ms idle=25.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "46634c03-52b4-4e24-b642-7beca79b8cb4", "2026-06-17T11:06:03Z", ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:53.452] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39362, oid: "46634c03-52b4-4e24-b642-7beca79b8cb4", upload_time: "2026-06-17T11:06:03Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]} [2026-06-17 11:06:53.452] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:03Z", "value" => "morefun"} [2026-06-17 11:06:53.477] [DEBUG] QUERY OK db=24.4ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "morefun", "vendor", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307803, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.478] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:03Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:53.523] [DEBUG] QUERY OK db=43.6ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "kiosk_launcher", "model", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307804, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.523] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:03Z", "value" => "1.0"} [2026-06-17 11:06:53.548] [DEBUG] QUERY OK db=25.0ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "1.0", "app_version", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307805, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.549] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:03Z", "value" => "13"} [2026-06-17 11:06:53.570] [DEBUG] QUERY OK db=19.6ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "13", "android_version", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307806, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.570] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:03Z", "value" => "844"} [2026-06-17 11:06:53.599] [DEBUG] QUERY OK db=28.3ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "844", "ram_free_mb", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307807, itemkey: "ram_free_mb", value: "844", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.599] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:03Z", "value" => "WIFI"} [2026-06-17 11:06:53.642] [DEBUG] QUERY OK db=42.2ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "WIFI", "network_type", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307808, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.642] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:03Z", "value" => "true"} [2026-06-17 11:06:53.666] [DEBUG] QUERY OK db=23.4ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "true", "kiosk_active", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307809, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.666] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:03Z", "value" => ""} [2026-06-17 11:06:53.693] [DEBUG] QUERY OK db=25.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:03Z", "sim_operator", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307810, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.693] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"} [2026-06-17 11:06:53.717] [DEBUG] QUERY OK db=23.6ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "UNKNOWN", "sim_number", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307811, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.718] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"} [2026-06-17 11:06:53.753] [DEBUG] QUERY OK db=34.2ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "UNKNOWN", "sim_iccid", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307812, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.753] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"} [2026-06-17 11:06:53.778] [DEBUG] QUERY OK db=23.9ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "UNKNOWN", "sim_imsi", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307813, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.779] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"} [2026-06-17 11:06:53.802] [DEBUG] QUERY OK db=23.1ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "UNKNOWN", "sim_iccid2", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307814, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.803] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:03Z", "value" => "UNKNOWN"} [2026-06-17 11:06:53.832] [DEBUG] QUERY OK db=29.3ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "UNKNOWN", "sim_imsi2", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307815, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.833] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:03Z", "value" => "7"} [2026-06-17 11:06:53.857] [DEBUG] QUERY OK db=24.0ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "7", "data_usage_mb", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307816, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.858] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:03Z", "value" => "0"} [2026-06-17 11:06:53.892] [DEBUG] QUERY OK db=33.5ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "0", "mobile_data_mb", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307817, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:53.893] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:06:53.923] [DEBUG] QUERY OK db=29.5ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39362, ~N[2026-06-17 11:06:53], ~N[2026-06-17 11:06:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:53.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307818, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:03Z", message: nil, status_log_id: 39362, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:53], updated_at: ~N[2026-06-17 11:06:53]}} [2026-06-17 11:06:59.716] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:06:59.716] [INFO ] Incoming JSON payload: {"oid":"9c832564-6e16-4686-856a-e7a9d2f5eaab","sn":"98251226730002","uploadTime":"2026-06-17T11:06:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"ram_free_mb","value":"845","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:09Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:06:59.718] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9c832564-6e16-4686-856a-e7a9d2f5eaab", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:09Z", "value" => "845"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:09Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:09Z", "vendor" => "morefun"} [2026-06-17 11:06:59.718] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:06:59.718] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:06:59.718] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:06:59.719] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=923.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-06-17 11:06:59.720] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=330.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.`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-06-17 11:06:59.720] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:06:59.721] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:06:59.721] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:06:59.737] [DEBUG] QUERY OK source="tms_terminals" db=15.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:06:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:06:59.737] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:06:59.739] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=16.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:06:59.754] [DEBUG] QUERY OK source="tms_terminals" db=15.0ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:06:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:06:59.771] [DEBUG] QUERY OK db=16.7ms idle=15.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "9c832564-6e16-4686-856a-e7a9d2f5eaab", "2026-06-17T11:06:09Z", ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:06:59.772] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39363, oid: "9c832564-6e16-4686-856a-e7a9d2f5eaab", upload_time: "2026-06-17T11:06:09Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]} [2026-06-17 11:06:59.772] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:09Z", "value" => "morefun"} [2026-06-17 11:06:59.796] [DEBUG] QUERY OK db=23.4ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "morefun", "vendor", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.796] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307819, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.796] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:09Z", "value" => "kiosk_launcher"} [2026-06-17 11:06:59.828] [DEBUG] QUERY OK db=30.5ms idle=1.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "kiosk_launcher", "model", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307820, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.828] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:09Z", "value" => "1.0"} [2026-06-17 11:06:59.841] [DEBUG] QUERY OK db=12.2ms queue=0.1ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "1.0", "app_version", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307821, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.842] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:09Z", "value" => "13"} [2026-06-17 11:06:59.855] [DEBUG] QUERY OK db=13.1ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "13", "android_version", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307822, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.856] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:09Z", "value" => "845"} [2026-06-17 11:06:59.879] [DEBUG] QUERY OK db=22.6ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "845", "ram_free_mb", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307823, itemkey: "ram_free_mb", value: "845", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.879] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:09Z", "value" => "WIFI"} [2026-06-17 11:06:59.912] [DEBUG] QUERY OK db=32.1ms queue=0.6ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "WIFI", "network_type", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307824, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.913] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:09Z", "value" => "true"} [2026-06-17 11:06:59.938] [DEBUG] QUERY OK db=25.1ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "true", "kiosk_active", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307825, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.939] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:09Z", "value" => ""} [2026-06-17 11:06:59.957] [DEBUG] QUERY OK db=18.3ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:09Z", "sim_operator", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307826, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.958] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"} [2026-06-17 11:06:59.985] [DEBUG] QUERY OK db=26.6ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "UNKNOWN", "sim_number", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:06:59.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307827, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:06:59.986] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"} [2026-06-17 11:07:00.011] [DEBUG] QUERY OK db=24.8ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "UNKNOWN", "sim_iccid", 39363, ~N[2026-06-17 11:06:59], ~N[2026-06-17 11:06:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:00.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307828, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:06:59], updated_at: ~N[2026-06-17 11:06:59]}} [2026-06-17 11:07:00.012] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"} [2026-06-17 11:07:00.035] [DEBUG] QUERY OK db=22.6ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "UNKNOWN", "sim_imsi", 39363, ~N[2026-06-17 11:07:00], ~N[2026-06-17 11:07:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:00.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307829, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:00], updated_at: ~N[2026-06-17 11:07:00]}} [2026-06-17 11:07:00.036] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"} [2026-06-17 11:07:00.050] [DEBUG] QUERY OK db=13.4ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "UNKNOWN", "sim_iccid2", 39363, ~N[2026-06-17 11:07:00], ~N[2026-06-17 11:07:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:00.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307830, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:00], updated_at: ~N[2026-06-17 11:07:00]}} [2026-06-17 11:07:00.050] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:09Z", "value" => "UNKNOWN"} [2026-06-17 11:07:00.065] [DEBUG] QUERY OK db=14.3ms queue=0.1ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "UNKNOWN", "sim_imsi2", 39363, ~N[2026-06-17 11:07:00], ~N[2026-06-17 11:07:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:00.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307831, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:00], updated_at: ~N[2026-06-17 11:07:00]}} [2026-06-17 11:07:00.066] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:09Z", "value" => "7"} [2026-06-17 11:07:00.090] [DEBUG] QUERY OK db=23.5ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "7", "data_usage_mb", 39363, ~N[2026-06-17 11:07:00], ~N[2026-06-17 11:07:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:00.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307832, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:00], updated_at: ~N[2026-06-17 11:07:00]}} [2026-06-17 11:07:00.090] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:09Z", "value" => "0"} [2026-06-17 11:07:00.120] [DEBUG] QUERY OK db=29.4ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "0", "mobile_data_mb", 39363, ~N[2026-06-17 11:07:00], ~N[2026-06-17 11:07:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:00.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307833, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:00], updated_at: ~N[2026-06-17 11:07:00]}} [2026-06-17 11:07:00.121] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:00.140] [DEBUG] QUERY OK db=17.4ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39363, ~N[2026-06-17 11:07:00], ~N[2026-06-17 11:07:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:00.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307834, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:09Z", message: nil, status_log_id: 39363, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:00], updated_at: ~N[2026-06-17 11:07:00]}} [2026-06-17 11:07:06.911] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:06.911] [INFO ] Incoming JSON payload: {"oid":"92ccabf5-e576-4bcc-b123-8fd15cee62d6","sn":"98251226730002","uploadTime":"2026-06-17T11:06:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"ram_free_mb","value":"844","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:15Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:07:06.912] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "92ccabf5-e576-4bcc-b123-8fd15cee62d6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:15Z", "value" => "844"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:15Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:15Z", "vendor" => "morefun"} [2026-06-17 11:07:06.913] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:06.913] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:06.913] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:06.914] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1068.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-06-17 11:07:06.916] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms queue=0.2ms idle=66.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-06-17 11:07:06.916] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:06.917] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:06.918] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:06.942] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms queue=0.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:06], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:06.942] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:06.943] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:06.967] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:06], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:06.999] [DEBUG] QUERY OK db=30.7ms queue=0.2ms idle=24.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "92ccabf5-e576-4bcc-b123-8fd15cee62d6", "2026-06-17T11:06:15Z", ~N[2026-06-17 11:07:06], ~N[2026-06-17 11:07:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:06.999] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39364, oid: "92ccabf5-e576-4bcc-b123-8fd15cee62d6", upload_time: "2026-06-17T11:06:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:06], updated_at: ~N[2026-06-17 11:07:06]} [2026-06-17 11:07:06.999] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:15Z", "value" => "morefun"} [2026-06-17 11:07:07.019] [DEBUG] QUERY OK db=19.8ms queue=0.1ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "morefun", "vendor", 39364, ~N[2026-06-17 11:07:06], ~N[2026-06-17 11:07:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307835, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:06], updated_at: ~N[2026-06-17 11:07:06]}} [2026-06-17 11:07:07.020] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:15Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:07.048] [DEBUG] QUERY OK db=27.3ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "kiosk_launcher", "model", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307836, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.048] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:15Z", "value" => "1.0"} [2026-06-17 11:07:07.072] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "1.0", "app_version", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307837, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.072] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:15Z", "value" => "13"} [2026-06-17 11:07:07.096] [DEBUG] QUERY OK db=23.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "13", "android_version", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307838, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.096] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:15Z", "value" => "844"} [2026-06-17 11:07:07.126] [DEBUG] QUERY OK db=29.6ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "844", "ram_free_mb", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307839, itemkey: "ram_free_mb", value: "844", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.127] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:15Z", "value" => "WIFI"} [2026-06-17 11:07:07.151] [DEBUG] QUERY OK db=23.7ms queue=0.3ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "WIFI", "network_type", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307840, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.153] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:15Z", "value" => "true"} [2026-06-17 11:07:07.203] [DEBUG] QUERY OK db=50.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "true", "kiosk_active", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307841, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.204] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:15Z", "value" => ""} [2026-06-17 11:07:07.234] [DEBUG] QUERY OK db=30.0ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:15Z", "sim_operator", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307842, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.234] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"} [2026-06-17 11:07:07.265] [DEBUG] QUERY OK db=30.0ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "UNKNOWN", "sim_number", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.265] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307843, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.266] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"} [2026-06-17 11:07:07.292] [DEBUG] QUERY OK db=24.4ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "UNKNOWN", "sim_iccid", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307844, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.293] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"} [2026-06-17 11:07:07.327] [DEBUG] QUERY OK db=32.9ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "UNKNOWN", "sim_imsi", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307845, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.327] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"} [2026-06-17 11:07:07.377] [DEBUG] QUERY OK db=48.3ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "UNKNOWN", "sim_iccid2", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307846, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.377] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:15Z", "value" => "UNKNOWN"} [2026-06-17 11:07:07.400] [DEBUG] QUERY OK db=22.9ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "UNKNOWN", "sim_imsi2", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307847, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.401] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:15Z", "value" => "7"} [2026-06-17 11:07:07.430] [DEBUG] QUERY OK db=28.2ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "7", "data_usage_mb", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307848, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.430] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:15Z", "value" => "0"} [2026-06-17 11:07:07.464] [DEBUG] QUERY OK db=33.2ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "0", "mobile_data_mb", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307849, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:07.465] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:07.493] [DEBUG] QUERY OK db=27.2ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39364, ~N[2026-06-17 11:07:07], ~N[2026-06-17 11:07:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:07.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307850, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:15Z", message: nil, status_log_id: 39364, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:07], updated_at: ~N[2026-06-17 11:07:07]}} [2026-06-17 11:07:12.037] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:12.038] [INFO ] Incoming JSON payload: {"oid":"3638d977-694f-4135-97e2-c3d412f8693b","sn":"98251226730002","uploadTime":"2026-06-17T11:06:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"ram_free_mb","value":"843","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:21Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:07:12.040] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3638d977-694f-4135-97e2-c3d412f8693b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:21Z", "value" => "843"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:21Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:21Z", "vendor" => "morefun"} [2026-06-17 11:07:12.041] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:12.041] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:12.041] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:12.042] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=650.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-06-17 11:07:12.042] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=181.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-06-17 11:07:12.043] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:12.043] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:12.044] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:12.076] [DEBUG] QUERY OK source="tms_terminals" db=31.3ms queue=1.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:12.077] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:12.077] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=33.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:12.102] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:12.132] [DEBUG] QUERY OK db=29.7ms idle=24.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3638d977-694f-4135-97e2-c3d412f8693b", "2026-06-17T11:06:21Z", ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:12.132] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39365, oid: "3638d977-694f-4135-97e2-c3d412f8693b", upload_time: "2026-06-17T11:06:21Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]} [2026-06-17 11:07:12.132] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:21Z", "value" => "morefun"} [2026-06-17 11:07:12.158] [DEBUG] QUERY OK db=25.3ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "morefun", "vendor", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307851, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.159] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:21Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:12.184] [DEBUG] QUERY OK db=24.8ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "kiosk_launcher", "model", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307852, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.187] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:21Z", "value" => "1.0"} [2026-06-17 11:07:12.220] [DEBUG] QUERY OK db=32.1ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "1.0", "app_version", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307853, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.220] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:21Z", "value" => "13"} [2026-06-17 11:07:12.248] [DEBUG] QUERY OK db=27.9ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "13", "android_version", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307854, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.249] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:21Z", "value" => "843"} [2026-06-17 11:07:12.264] [DEBUG] QUERY OK db=14.8ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "843", "ram_free_mb", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307855, itemkey: "ram_free_mb", value: "843", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.264] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:21Z", "value" => "WIFI"} [2026-06-17 11:07:12.286] [DEBUG] QUERY OK db=21.6ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "WIFI", "network_type", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307856, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.287] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:21Z", "value" => "true"} [2026-06-17 11:07:12.313] [DEBUG] QUERY OK db=26.2ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "true", "kiosk_active", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307857, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.314] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:21Z", "value" => ""} [2026-06-17 11:07:12.349] [DEBUG] QUERY OK db=33.6ms queue=1.2ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:21Z", "sim_operator", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307858, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.349] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"} [2026-06-17 11:07:12.392] [DEBUG] QUERY OK db=42.0ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "UNKNOWN", "sim_number", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307859, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.393] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"} [2026-06-17 11:07:12.437] [DEBUG] QUERY OK db=44.0ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "UNKNOWN", "sim_iccid", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307860, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.438] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"} [2026-06-17 11:07:12.458] [DEBUG] QUERY OK db=18.2ms queue=2.1ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "UNKNOWN", "sim_imsi", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307861, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.459] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"} [2026-06-17 11:07:12.473] [DEBUG] QUERY OK db=13.7ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "UNKNOWN", "sim_iccid2", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307862, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.473] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:21Z", "value" => "UNKNOWN"} [2026-06-17 11:07:12.508] [DEBUG] QUERY OK db=32.1ms queue=0.1ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "UNKNOWN", "sim_imsi2", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307863, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.508] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:21Z", "value" => "7"} [2026-06-17 11:07:12.533] [DEBUG] QUERY OK db=24.7ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "7", "data_usage_mb", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307864, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.537] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:21Z", "value" => "0"} [2026-06-17 11:07:12.562] [DEBUG] QUERY OK db=24.4ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "0", "mobile_data_mb", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307865, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:12.563] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:12.580] [DEBUG] QUERY OK db=16.2ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39365, ~N[2026-06-17 11:07:12], ~N[2026-06-17 11:07:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:12.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307866, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:21Z", message: nil, status_log_id: 39365, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:12], updated_at: ~N[2026-06-17 11:07:12]}} [2026-06-17 11:07:18.107] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:18.107] [INFO ] Incoming JSON payload: {"oid":"8913faf0-f66a-4e8e-9676-1f78560bc8e8","sn":"98251226730002","uploadTime":"2026-06-17T11:06:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"ram_free_mb","value":"843","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:27Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:07:18.108] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8913faf0-f66a-4e8e-9676-1f78560bc8e8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:27Z", "value" => "843"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:27Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:27Z", "vendor" => "morefun"} [2026-06-17 11:07:18.108] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:18.108] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:18.108] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:18.109] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1232.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-06-17 11:07:18.111] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=230.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-06-17 11:07:18.111] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:18.112] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:18.112] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:18.137] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:18], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:18.137] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:18.138] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:18.184] [DEBUG] QUERY OK source="tms_terminals" db=44.6ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:18], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:18.209] [DEBUG] QUERY OK db=24.7ms idle=45.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8913faf0-f66a-4e8e-9676-1f78560bc8e8", "2026-06-17T11:06:27Z", ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:18.210] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39366, oid: "8913faf0-f66a-4e8e-9676-1f78560bc8e8", upload_time: "2026-06-17T11:06:27Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]} [2026-06-17 11:07:18.210] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:27Z", "value" => "morefun"} [2026-06-17 11:07:18.236] [DEBUG] QUERY OK db=25.5ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "morefun", "vendor", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307867, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.237] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:27Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:18.261] [DEBUG] QUERY OK db=24.0ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "kiosk_launcher", "model", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307868, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.262] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:27Z", "value" => "1.0"} [2026-06-17 11:07:18.298] [DEBUG] QUERY OK db=35.9ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "1.0", "app_version", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307869, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.298] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:27Z", "value" => "13"} [2026-06-17 11:07:18.333] [DEBUG] QUERY OK db=33.4ms queue=0.5ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "13", "android_version", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307870, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.333] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:27Z", "value" => "843"} [2026-06-17 11:07:18.387] [DEBUG] QUERY OK db=52.6ms queue=0.1ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "843", "ram_free_mb", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307871, itemkey: "ram_free_mb", value: "843", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.387] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:27Z", "value" => "WIFI"} [2026-06-17 11:07:18.427] [DEBUG] QUERY OK db=38.9ms queue=0.1ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "WIFI", "network_type", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307872, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.430] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:27Z", "value" => "true"} [2026-06-17 11:07:18.477] [DEBUG] QUERY OK db=46.2ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "true", "kiosk_active", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307873, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.477] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:27Z", "value" => ""} [2026-06-17 11:07:18.515] [DEBUG] QUERY OK db=37.5ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:27Z", "sim_operator", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307874, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.516] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"} [2026-06-17 11:07:18.565] [DEBUG] QUERY OK db=49.0ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "UNKNOWN", "sim_number", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307875, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.565] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"} [2026-06-17 11:07:18.604] [DEBUG] QUERY OK db=38.7ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "UNKNOWN", "sim_iccid", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307876, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.605] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"} [2026-06-17 11:07:18.673] [DEBUG] QUERY OK db=68.0ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "UNKNOWN", "sim_imsi", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307877, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.674] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"} [2026-06-17 11:07:18.704] [DEBUG] QUERY OK db=29.0ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "UNKNOWN", "sim_iccid2", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307878, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.704] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:27Z", "value" => "UNKNOWN"} [2026-06-17 11:07:18.729] [DEBUG] QUERY OK db=22.6ms queue=1.2ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "UNKNOWN", "sim_imsi2", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307879, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.729] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:27Z", "value" => "7"} [2026-06-17 11:07:18.748] [DEBUG] QUERY OK db=18.5ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "7", "data_usage_mb", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307880, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.749] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:27Z", "value" => "0"} [2026-06-17 11:07:18.773] [DEBUG] QUERY OK db=24.1ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "0", "mobile_data_mb", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307881, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:18.774] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:18.805] [DEBUG] QUERY OK db=29.6ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39366, ~N[2026-06-17 11:07:18], ~N[2026-06-17 11:07:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:18.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307882, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:27Z", message: nil, status_log_id: 39366, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:18], updated_at: ~N[2026-06-17 11:07:18]}} [2026-06-17 11:07:24.284] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:24.284] [INFO ] Incoming JSON payload: {"oid":"40a3673f-211d-4f11-8167-b63a494b3b3d","sn":"98251226730002","uploadTime":"2026-06-17T11:06:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"ram_free_mb","value":"843","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:07:24.285] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "40a3673f-211d-4f11-8167-b63a494b3b3d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:34Z", "value" => "843"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:34Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:34Z", "vendor" => "morefun"} [2026-06-17 11:07:24.285] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:24.287] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:24.287] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:24.287] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=896.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-06-17 11:07:24.289] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=389.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-06-17 11:07:24.289] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:24.290] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:24.290] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:24.304] [DEBUG] QUERY OK source="tms_terminals" db=12.8ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:24], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:24.304] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:24.306] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:24.346] [DEBUG] QUERY OK source="tms_terminals" db=39.1ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:24], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:24.370] [DEBUG] QUERY OK db=23.0ms idle=40.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "40a3673f-211d-4f11-8167-b63a494b3b3d", "2026-06-17T11:06:34Z", ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:24.370] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39367, oid: "40a3673f-211d-4f11-8167-b63a494b3b3d", upload_time: "2026-06-17T11:06:34Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]} [2026-06-17 11:07:24.371] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:34Z", "value" => "morefun"} [2026-06-17 11:07:24.395] [DEBUG] QUERY OK db=23.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "morefun", "vendor", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307883, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.395] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:34Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:24.409] [DEBUG] QUERY OK db=12.6ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "kiosk_launcher", "model", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307884, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.409] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:34Z", "value" => "1.0"} [2026-06-17 11:07:24.438] [DEBUG] QUERY OK db=28.8ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "1.0", "app_version", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307885, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.438] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:34Z", "value" => "13"} [2026-06-17 11:07:24.472] [DEBUG] QUERY OK db=32.6ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "13", "android_version", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307886, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.472] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:34Z", "value" => "843"} [2026-06-17 11:07:24.497] [DEBUG] QUERY OK db=24.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "843", "ram_free_mb", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307887, itemkey: "ram_free_mb", value: "843", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.497] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:34Z", "value" => "WIFI"} [2026-06-17 11:07:24.512] [DEBUG] QUERY OK db=14.2ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "WIFI", "network_type", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307888, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.512] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:34Z", "value" => "true"} [2026-06-17 11:07:24.531] [DEBUG] QUERY OK db=17.8ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "true", "kiosk_active", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307889, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.532] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:34Z", "value" => ""} [2026-06-17 11:07:24.556] [DEBUG] QUERY OK db=23.6ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:34Z", "sim_operator", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307890, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.557] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"} [2026-06-17 11:07:24.592] [DEBUG] QUERY OK db=33.7ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "UNKNOWN", "sim_number", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307891, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.593] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"} [2026-06-17 11:07:24.611] [DEBUG] QUERY OK db=18.0ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "UNKNOWN", "sim_iccid", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307892, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.611] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"} [2026-06-17 11:07:24.630] [DEBUG] QUERY OK db=18.0ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "UNKNOWN", "sim_imsi", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307893, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.634] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"} [2026-06-17 11:07:24.666] [DEBUG] QUERY OK db=28.0ms queue=0.4ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "UNKNOWN", "sim_iccid2", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307894, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.668] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:34Z", "value" => "UNKNOWN"} [2026-06-17 11:07:24.704] [DEBUG] QUERY OK db=33.7ms queue=1.3ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "UNKNOWN", "sim_imsi2", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307895, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.704] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:34Z", "value" => "7"} [2026-06-17 11:07:24.719] [DEBUG] QUERY OK db=14.2ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "7", "data_usage_mb", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307896, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.719] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:34Z", "value" => "0"} [2026-06-17 11:07:24.732] [DEBUG] QUERY OK db=11.3ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:34Z", "0", "mobile_data_mb", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307897, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:24.733] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:24.765] [DEBUG] QUERY OK db=31.2ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39367, ~N[2026-06-17 11:07:24], ~N[2026-06-17 11:07:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:24.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307898, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:34Z", message: nil, status_log_id: 39367, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:24], updated_at: ~N[2026-06-17 11:07:24]}} [2026-06-17 11:07:30.358] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:30.359] [INFO ] Incoming JSON payload: {"oid":"0e76cde5-084e-4f48-806d-ae6a29821ec7","sn":"98251226730002","uploadTime":"2026-06-17T11:06:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"ram_free_mb","value":"842","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:40Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:07:30.359] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0e76cde5-084e-4f48-806d-ae6a29821ec7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:40Z", "value" => "842"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:40Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:40Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:40Z", "vendor" => "morefun"} [2026-06-17 11:07:30.360] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:30.360] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:30.360] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:30.362] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1447.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-06-17 11:07:30.363] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=445.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-06-17 11:07:30.363] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:30.364] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:30.364] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:30.378] [DEBUG] QUERY OK source="tms_terminals" db=13.6ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:30.379] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:30.380] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:30.420] [DEBUG] QUERY OK source="tms_terminals" db=39.4ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:30], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:30.445] [DEBUG] QUERY OK db=24.6ms queue=0.1ms idle=40.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0e76cde5-084e-4f48-806d-ae6a29821ec7", "2026-06-17T11:06:40Z", ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:30.445] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39368, oid: "0e76cde5-084e-4f48-806d-ae6a29821ec7", upload_time: "2026-06-17T11:06:40Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]} [2026-06-17 11:07:30.445] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:40Z", "value" => "morefun"} [2026-06-17 11:07:30.464] [DEBUG] QUERY OK db=18.1ms queue=0.3ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "morefun", "vendor", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307899, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.465] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:40Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:30.479] [DEBUG] QUERY OK db=13.5ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "kiosk_launcher", "model", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307900, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.479] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:40Z", "value" => "1.0"} [2026-06-17 11:07:30.505] [DEBUG] QUERY OK db=25.8ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "1.0", "app_version", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307901, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.506] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:40Z", "value" => "13"} [2026-06-17 11:07:30.531] [DEBUG] QUERY OK db=25.1ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "13", "android_version", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307902, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.531] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:40Z", "value" => "842"} [2026-06-17 11:07:30.566] [DEBUG] QUERY OK db=34.6ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "842", "ram_free_mb", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307903, itemkey: "ram_free_mb", value: "842", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.567] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:40Z", "value" => "WIFI"} [2026-06-17 11:07:30.580] [DEBUG] QUERY OK db=12.7ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "WIFI", "network_type", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307904, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.580] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:40Z", "value" => "true"} [2026-06-17 11:07:30.596] [DEBUG] QUERY OK db=14.6ms queue=0.4ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "true", "kiosk_active", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307905, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.596] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:40Z", "value" => ""} [2026-06-17 11:07:30.622] [DEBUG] QUERY OK db=25.9ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:40Z", "sim_operator", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307906, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.623] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"} [2026-06-17 11:07:30.646] [DEBUG] QUERY OK db=22.8ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "UNKNOWN", "sim_number", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307907, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.648] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"} [2026-06-17 11:07:30.686] [DEBUG] QUERY OK db=37.4ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "UNKNOWN", "sim_iccid", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307908, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.687] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"} [2026-06-17 11:07:30.708] [DEBUG] QUERY OK db=21.2ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "UNKNOWN", "sim_imsi", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307909, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.708] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"} [2026-06-17 11:07:30.744] [DEBUG] QUERY OK db=35.1ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "UNKNOWN", "sim_iccid2", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307910, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.744] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:40Z", "value" => "UNKNOWN"} [2026-06-17 11:07:30.763] [DEBUG] QUERY OK db=18.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "UNKNOWN", "sim_imsi2", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307911, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.763] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:40Z", "value" => "7"} [2026-06-17 11:07:30.786] [DEBUG] QUERY OK db=22.1ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "7", "data_usage_mb", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307912, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.786] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:40Z", "value" => "0"} [2026-06-17 11:07:30.820] [DEBUG] QUERY OK db=33.7ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "0", "mobile_data_mb", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307913, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:30.821] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:40Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:30.845] [DEBUG] QUERY OK db=23.3ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:40Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39368, ~N[2026-06-17 11:07:30], ~N[2026-06-17 11:07:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:30.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307914, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:40Z", message: nil, status_log_id: 39368, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:30], updated_at: ~N[2026-06-17 11:07:30]}} [2026-06-17 11:07:36.430] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:36.431] [INFO ] Incoming JSON payload: {"oid":"a98700c1-b933-4ed1-928c-571fcf3ebe19","sn":"98251226730002","uploadTime":"2026-06-17T11:06:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"ram_free_mb","value":"841","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:46Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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 (truncated) [2026-06-17 11:07:36.432] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a98700c1-b933-4ed1-928c-571fcf3ebe19", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:46Z", "value" => "841"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:46Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:46Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:46Z", "vendor" => "morefun"} [2026-06-17 11:07:36.432] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:36.432] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:36.432] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:36.435] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=1034.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-06-17 11:07:36.440] [DEBUG] QUERY OK source="parameter_templates" db=4.7ms idle=504.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-06-17 11:07:36.440] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:36.442] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:36.442] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:36.468] [DEBUG] QUERY OK source="tms_terminals" db=25.5ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:36.468] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:36.470] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:36.495] [DEBUG] QUERY OK source="tms_terminals" db=25.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:36.531] [DEBUG] QUERY OK db=35.5ms idle=25.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a98700c1-b933-4ed1-928c-571fcf3ebe19", "2026-06-17T11:06:46Z", ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:36.533] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39369, oid: "a98700c1-b933-4ed1-928c-571fcf3ebe19", upload_time: "2026-06-17T11:06:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]} [2026-06-17 11:07:36.533] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:46Z", "value" => "morefun"} [2026-06-17 11:07:36.554] [DEBUG] QUERY OK db=21.1ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "morefun", "vendor", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307915, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.558] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:46Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:36.592] [DEBUG] QUERY OK db=25.8ms queue=3.4ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "kiosk_launcher", "model", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307916, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.595] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:46Z", "value" => "1.0"} [2026-06-17 11:07:36.625] [DEBUG] QUERY OK db=29.8ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "1.0", "app_version", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307917, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.626] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:46Z", "value" => "13"} [2026-06-17 11:07:36.649] [DEBUG] QUERY OK db=22.6ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "13", "android_version", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307918, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.651] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:46Z", "value" => "841"} [2026-06-17 11:07:36.676] [DEBUG] QUERY OK db=21.2ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "841", "ram_free_mb", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307919, itemkey: "ram_free_mb", value: "841", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.678] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:46Z", "value" => "WIFI"} [2026-06-17 11:07:36.710] [DEBUG] QUERY OK db=31.6ms idle=29.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "WIFI", "network_type", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307920, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.712] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:46Z", "value" => "true"} [2026-06-17 11:07:36.744] [DEBUG] QUERY OK db=32.1ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "true", "kiosk_active", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307921, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.745] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:46Z", "value" => ""} [2026-06-17 11:07:36.777] [DEBUG] QUERY OK db=31.8ms queue=0.5ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:46Z", "sim_operator", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307922, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.778] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"} [2026-06-17 11:07:36.789] [DEBUG] QUERY OK db=11.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "UNKNOWN", "sim_number", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307923, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.790] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"} [2026-06-17 11:07:36.840] [DEBUG] QUERY OK db=42.1ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "UNKNOWN", "sim_iccid", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.840] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307924, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.841] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"} [2026-06-17 11:07:36.865] [DEBUG] QUERY OK db=24.4ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "UNKNOWN", "sim_imsi", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307925, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.866] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"} [2026-06-17 11:07:36.889] [DEBUG] QUERY OK db=23.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "UNKNOWN", "sim_iccid2", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307926, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.890] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:46Z", "value" => "UNKNOWN"} [2026-06-17 11:07:36.910] [DEBUG] QUERY OK db=19.4ms queue=0.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "UNKNOWN", "sim_imsi2", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307927, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.910] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:46Z", "value" => "7"} [2026-06-17 11:07:36.945] [DEBUG] QUERY OK db=34.7ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "7", "data_usage_mb", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307928, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.946] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:46Z", "value" => "0"} [2026-06-17 11:07:36.971] [DEBUG] QUERY OK db=24.3ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "0", "mobile_data_mb", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:36.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307929, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:36.973] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:46Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:37.012] [DEBUG] QUERY OK db=38.0ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:46Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39369, ~N[2026-06-17 11:07:36], ~N[2026-06-17 11:07:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:37.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307930, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:46Z", message: nil, status_log_id: 39369, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:36], updated_at: ~N[2026-06-17 11:07:36]}} [2026-06-17 11:07:42.851] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:42.851] [INFO ] Incoming JSON payload: {"oid":"37516fae-f401-486a-8922-d3eff7a46832","sn":"98251226730002","uploadTime":"2026-06-17T11:06:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"ram_free_mb","value":"828","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:52Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:07:42.853] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "37516fae-f401-486a-8922-d3eff7a46832", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:52Z", "value" => "828"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:52Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:52Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:52Z", "vendor" => "morefun"} [2026-06-17 11:07:42.853] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:42.853] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:42.853] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:42.855] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.8ms idle=895.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-06-17 11:07:42.856] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=455.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.`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-06-17 11:07:42.856] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:42.857] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:42.857] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:42.882] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms queue=0.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:42.882] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:42.883] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:42.916] [DEBUG] QUERY OK source="tms_terminals" db=32.4ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:42], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:42.939] [DEBUG] QUERY OK db=21.0ms queue=0.1ms idle=33.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "37516fae-f401-486a-8922-d3eff7a46832", "2026-06-17T11:06:52Z", ~N[2026-06-17 11:07:42], ~N[2026-06-17 11:07:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:42.939] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39370, oid: "37516fae-f401-486a-8922-d3eff7a46832", upload_time: "2026-06-17T11:06:52Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:42], updated_at: ~N[2026-06-17 11:07:42]} [2026-06-17 11:07:42.939] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:52Z", "value" => "morefun"} [2026-06-17 11:07:42.963] [DEBUG] QUERY OK db=23.3ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "morefun", "vendor", 39370, ~N[2026-06-17 11:07:42], ~N[2026-06-17 11:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:42.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307931, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:42], updated_at: ~N[2026-06-17 11:07:42]}} [2026-06-17 11:07:42.963] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:52Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:42.988] [DEBUG] QUERY OK db=24.0ms idle=2.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "kiosk_launcher", "model", 39370, ~N[2026-06-17 11:07:42], ~N[2026-06-17 11:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:42.988] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307932, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:42], updated_at: ~N[2026-06-17 11:07:42]}} [2026-06-17 11:07:42.988] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:52Z", "value" => "1.0"} [2026-06-17 11:07:43.024] [DEBUG] QUERY OK db=34.9ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "1.0", "app_version", 39370, ~N[2026-06-17 11:07:42], ~N[2026-06-17 11:07:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307933, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:42], updated_at: ~N[2026-06-17 11:07:42]}} [2026-06-17 11:07:43.024] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:52Z", "value" => "13"} [2026-06-17 11:07:43.057] [DEBUG] QUERY OK db=32.4ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "13", "android_version", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307934, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.058] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:52Z", "value" => "828"} [2026-06-17 11:07:43.078] [DEBUG] QUERY OK db=19.8ms queue=0.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "828", "ram_free_mb", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307935, itemkey: "ram_free_mb", value: "828", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.078] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:52Z", "value" => "WIFI"} [2026-06-17 11:07:43.113] [DEBUG] QUERY OK db=33.7ms queue=0.4ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "WIFI", "network_type", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307936, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.113] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:52Z", "value" => "true"} [2026-06-17 11:07:43.146] [DEBUG] QUERY OK db=31.8ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "true", "kiosk_active", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307937, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.146] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:52Z", "value" => ""} [2026-06-17 11:07:43.169] [DEBUG] QUERY OK db=22.5ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:52Z", "sim_operator", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307938, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.169] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"} [2026-06-17 11:07:43.189] [DEBUG] QUERY OK db=19.6ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "UNKNOWN", "sim_number", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307939, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.190] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"} [2026-06-17 11:07:43.228] [DEBUG] QUERY OK db=37.0ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "UNKNOWN", "sim_iccid", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307940, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.229] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"} [2026-06-17 11:07:43.262] [DEBUG] QUERY OK db=32.5ms queue=0.3ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "UNKNOWN", "sim_imsi", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307941, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.262] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"} [2026-06-17 11:07:43.287] [DEBUG] QUERY OK db=24.6ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "UNKNOWN", "sim_iccid2", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307942, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.288] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:52Z", "value" => "UNKNOWN"} [2026-06-17 11:07:43.319] [DEBUG] QUERY OK db=30.4ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "UNKNOWN", "sim_imsi2", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307943, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.319] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:52Z", "value" => "7"} [2026-06-17 11:07:43.353] [DEBUG] QUERY OK db=33.4ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "7", "data_usage_mb", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307944, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.354] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:52Z", "value" => "0"} [2026-06-17 11:07:43.378] [DEBUG] QUERY OK db=23.9ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "0", "mobile_data_mb", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307945, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:43.379] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:52Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:43.413] [DEBUG] QUERY OK db=33.1ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:52Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39370, ~N[2026-06-17 11:07:43], ~N[2026-06-17 11:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:43.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307946, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:52Z", message: nil, status_log_id: 39370, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:43], updated_at: ~N[2026-06-17 11:07:43]}} [2026-06-17 11:07:48.822] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:48.822] [INFO ] Incoming JSON payload: {"oid":"24cfc98c-d5c4-41a6-9628-d9246c675319","sn":"98251226730002","uploadTime":"2026-06-17T11:06:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"ram_free_mb","value":"772","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:06:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:06:58Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:07:48.824] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "24cfc98c-d5c4-41a6-9628-d9246c675319", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:58Z", "value" => "772"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:58Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:06:58Z", "vendor" => "morefun"} [2026-06-17 11:07:48.824] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:48.824] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:48.824] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:48.825] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=847.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-06-17 11:07:48.826] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=625.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-06-17 11:07:48.826] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:48.827] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:48.828] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:48.852] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:48.852] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:48.854] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:48.884] [DEBUG] QUERY OK source="tms_terminals" db=28.4ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:48.918] [DEBUG] QUERY OK db=33.9ms idle=30.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "24cfc98c-d5c4-41a6-9628-d9246c675319", "2026-06-17T11:06:58Z", ~N[2026-06-17 11:07:48], ~N[2026-06-17 11:07:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:48.919] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39371, oid: "24cfc98c-d5c4-41a6-9628-d9246c675319", upload_time: "2026-06-17T11:06:58Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:48], updated_at: ~N[2026-06-17 11:07:48]} [2026-06-17 11:07:48.919] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:06:58Z", "value" => "morefun"} [2026-06-17 11:07:48.943] [DEBUG] QUERY OK db=23.4ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "morefun", "vendor", 39371, ~N[2026-06-17 11:07:48], ~N[2026-06-17 11:07:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:48.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307947, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:48], updated_at: ~N[2026-06-17 11:07:48]}} [2026-06-17 11:07:48.944] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:06:58Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:48.981] [DEBUG] QUERY OK db=36.3ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "kiosk_launcher", "model", 39371, ~N[2026-06-17 11:07:48], ~N[2026-06-17 11:07:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:48.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307948, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:48], updated_at: ~N[2026-06-17 11:07:48]}} [2026-06-17 11:07:48.982] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:06:58Z", "value" => "1.0"} [2026-06-17 11:07:49.005] [DEBUG] QUERY OK db=23.1ms idle=1.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "1.0", "app_version", 39371, ~N[2026-06-17 11:07:48], ~N[2026-06-17 11:07:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307949, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:48], updated_at: ~N[2026-06-17 11:07:48]}} [2026-06-17 11:07:49.006] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:06:58Z", "value" => "13"} [2026-06-17 11:07:49.041] [DEBUG] QUERY OK db=35.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "13", "android_version", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307950, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.042] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:06:58Z", "value" => "772"} [2026-06-17 11:07:49.066] [DEBUG] QUERY OK db=24.3ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "772", "ram_free_mb", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307951, itemkey: "ram_free_mb", value: "772", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.067] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:06:58Z", "value" => "WIFI"} [2026-06-17 11:07:49.101] [DEBUG] QUERY OK db=33.8ms queue=0.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "WIFI", "network_type", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307952, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.102] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:06:58Z", "value" => "true"} [2026-06-17 11:07:49.126] [DEBUG] QUERY OK db=23.3ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "true", "kiosk_active", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307953, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.126] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:06:58Z", "value" => ""} [2026-06-17 11:07:49.157] [DEBUG] QUERY OK db=30.4ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:06:58Z", "sim_operator", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307954, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.157] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"} [2026-06-17 11:07:49.183] [DEBUG] QUERY OK db=25.6ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "UNKNOWN", "sim_number", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307955, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.184] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"} [2026-06-17 11:07:49.209] [DEBUG] QUERY OK db=25.1ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "UNKNOWN", "sim_iccid", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307956, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.210] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"} [2026-06-17 11:07:49.235] [DEBUG] QUERY OK db=23.9ms decode=0.3ms queue=0.7ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "UNKNOWN", "sim_imsi", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307957, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.236] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"} [2026-06-17 11:07:49.263] [DEBUG] QUERY OK db=26.9ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "UNKNOWN", "sim_iccid2", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307958, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.264] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:06:58Z", "value" => "UNKNOWN"} [2026-06-17 11:07:49.297] [DEBUG] QUERY OK db=30.6ms queue=0.1ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "UNKNOWN", "sim_imsi2", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307959, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.298] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:06:58Z", "value" => "7"} [2026-06-17 11:07:49.342] [DEBUG] QUERY OK db=44.0ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "7", "data_usage_mb", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307960, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.343] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:06:58Z", "value" => "0"} [2026-06-17 11:07:49.368] [DEBUG] QUERY OK db=24.5ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "0", "mobile_data_mb", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307961, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:49.369] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:06:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:49.403] [DEBUG] QUERY OK db=33.7ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:06:58Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39371, ~N[2026-06-17 11:07:49], ~N[2026-06-17 11:07:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:49.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307962, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:06:58Z", message: nil, status_log_id: 39371, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:49], updated_at: ~N[2026-06-17 11:07:49]}} [2026-06-17 11:07:55.064] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:07:55.064] [INFO ] Incoming JSON payload: {"oid":"92b15fe5-17ec-488a-9c52-81f01b33b70b","sn":"98251226730002","uploadTime":"2026-06-17T11:07:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"ram_free_mb","value":"776","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:07:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:07:55.065] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "92b15fe5-17ec-488a-9c52-81f01b33b70b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:04Z", "value" => "776"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:04Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:04Z", "vendor" => "morefun"} [2026-06-17 11:07:55.065] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:07:55.065] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:07:55.065] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:07:55.067] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=657.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:07:55.067] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=68.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.`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-06-17 11:07:55.068] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:07:55.068] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:07:55.069] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:07:55.105] [DEBUG] QUERY OK source="tms_terminals" db=36.4ms queue=0.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:07:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:07:55.106] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:07:55.107] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=37.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:07:55.150] [DEBUG] QUERY OK source="tms_terminals" db=42.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:07:55], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:07:55.173] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=43.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "92b15fe5-17ec-488a-9c52-81f01b33b70b", "2026-06-17T11:07:04Z", ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:07:55.174] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39372, oid: "92b15fe5-17ec-488a-9c52-81f01b33b70b", upload_time: "2026-06-17T11:07:04Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]} [2026-06-17 11:07:55.174] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:04Z", "value" => "morefun"} [2026-06-17 11:07:55.196] [DEBUG] QUERY OK db=21.6ms queue=0.1ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "morefun", "vendor", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307963, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.196] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:04Z", "value" => "kiosk_launcher"} [2026-06-17 11:07:55.216] [DEBUG] QUERY OK db=19.4ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "kiosk_launcher", "model", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307964, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.216] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:04Z", "value" => "1.0"} [2026-06-17 11:07:55.267] [DEBUG] QUERY OK db=50.4ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "1.0", "app_version", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307965, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.268] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:04Z", "value" => "13"} [2026-06-17 11:07:55.298] [DEBUG] QUERY OK db=30.4ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "13", "android_version", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307966, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.299] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:04Z", "value" => "776"} [2026-06-17 11:07:55.344] [DEBUG] QUERY OK db=42.6ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "776", "ram_free_mb", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307967, itemkey: "ram_free_mb", value: "776", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.344] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:04Z", "value" => "WIFI"} [2026-06-17 11:07:55.435] [DEBUG] QUERY OK db=89.8ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "WIFI", "network_type", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307968, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.435] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:04Z", "value" => "true"} [2026-06-17 11:07:55.470] [DEBUG] QUERY OK db=34.5ms idle=91.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "true", "kiosk_active", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307969, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.471] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:04Z", "value" => ""} [2026-06-17 11:07:55.499] [DEBUG] QUERY OK db=27.6ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:04Z", "sim_operator", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307970, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.500] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"} [2026-06-17 11:07:55.528] [DEBUG] QUERY OK db=25.2ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "UNKNOWN", "sim_number", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307971, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.528] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"} [2026-06-17 11:07:55.552] [DEBUG] QUERY OK db=23.4ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "UNKNOWN", "sim_iccid", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307972, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.553] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"} [2026-06-17 11:07:55.586] [DEBUG] QUERY OK db=31.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "UNKNOWN", "sim_imsi", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307973, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.586] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"} [2026-06-17 11:07:55.611] [DEBUG] QUERY OK db=24.9ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "UNKNOWN", "sim_iccid2", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307974, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.612] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:04Z", "value" => "UNKNOWN"} [2026-06-17 11:07:55.627] [DEBUG] QUERY OK db=15.2ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "UNKNOWN", "sim_imsi2", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307975, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.628] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:04Z", "value" => "7"} [2026-06-17 11:07:55.657] [DEBUG] QUERY OK db=29.3ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "7", "data_usage_mb", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307976, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.658] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:04Z", "value" => "0"} [2026-06-17 11:07:55.684] [DEBUG] QUERY OK db=25.2ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:04Z", "0", "mobile_data_mb", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307977, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:07:55.686] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:07:55.721] [DEBUG] QUERY OK db=34.1ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39372, ~N[2026-06-17 11:07:55], ~N[2026-06-17 11:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:07:55.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307978, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:04Z", message: nil, status_log_id: 39372, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:07:55], updated_at: ~N[2026-06-17 11:07:55]}} [2026-06-17 11:08:01.164] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:01.164] [INFO ] Incoming JSON payload: {"oid":"8f54a34d-4547-4153-9448-f7eb30c394e3","sn":"98251226730002","uploadTime":"2026-06-17T11:07:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"ram_free_mb","value":"769","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:07:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07:10Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:01.166] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8f54a34d-4547-4153-9448-f7eb30c394e3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:10Z", "value" => "769"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:10Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:10Z", "vendor" => "morefun"} [2026-06-17 11:08:01.166] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:01.166] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:01.166] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:01.167] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=731.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-06-17 11:08:01.168] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=150.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-06-17 11:08:01.168] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:01.169] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:01.169] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:01.196] [DEBUG] QUERY OK source="tms_terminals" db=26.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:08:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:01.196] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:01.198] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:01.229] [DEBUG] QUERY OK source="tms_terminals" db=31.3ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:01], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:01.250] [DEBUG] QUERY OK db=20.6ms queue=0.1ms idle=31.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8f54a34d-4547-4153-9448-f7eb30c394e3", "2026-06-17T11:07:10Z", ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:01.251] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39373, oid: "8f54a34d-4547-4153-9448-f7eb30c394e3", upload_time: "2026-06-17T11:07:10Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]} [2026-06-17 11:08:01.251] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:10Z", "value" => "morefun"} [2026-06-17 11:08:01.265] [DEBUG] QUERY OK db=14.1ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "morefun", "vendor", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307979, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.266] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:10Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:01.284] [DEBUG] QUERY OK db=16.0ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "kiosk_launcher", "model", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307980, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.284] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:10Z", "value" => "1.0"} [2026-06-17 11:08:01.313] [DEBUG] QUERY OK db=28.6ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "1.0", "app_version", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307981, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.314] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:10Z", "value" => "13"} [2026-06-17 11:08:01.354] [DEBUG] QUERY OK db=39.6ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "13", "android_version", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307982, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.355] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:10Z", "value" => "769"} [2026-06-17 11:08:01.434] [DEBUG] QUERY OK db=79.2ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "769", "ram_free_mb", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307983, itemkey: "ram_free_mb", value: "769", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.435] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:10Z", "value" => "WIFI"} [2026-06-17 11:08:01.451] [DEBUG] QUERY OK db=15.5ms idle=80.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "WIFI", "network_type", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307984, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.451] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:10Z", "value" => "true"} [2026-06-17 11:08:01.465] [DEBUG] QUERY OK db=13.4ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "true", "kiosk_active", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307985, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.466] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:10Z", "value" => ""} [2026-06-17 11:08:01.491] [DEBUG] QUERY OK db=24.8ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:10Z", "sim_operator", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307986, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.492] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:08:01.525] [DEBUG] QUERY OK db=33.0ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "UNKNOWN", "sim_number", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307987, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.526] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:08:01.547] [DEBUG] QUERY OK db=21.2ms queue=0.1ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "UNKNOWN", "sim_iccid", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307988, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.548] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:08:01.558] [DEBUG] QUERY OK db=9.0ms queue=0.1ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "UNKNOWN", "sim_imsi", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307989, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.559] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:08:01.582] [DEBUG] QUERY OK db=22.1ms queue=0.1ms idle=12.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "UNKNOWN", "sim_iccid2", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307990, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.583] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:10Z", "value" => "UNKNOWN"} [2026-06-17 11:08:01.617] [DEBUG] QUERY OK db=33.7ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "UNKNOWN", "sim_imsi2", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307991, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.618] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:10Z", "value" => "7"} [2026-06-17 11:08:01.641] [DEBUG] QUERY OK db=22.6ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "7", "data_usage_mb", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307992, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.642] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:10Z", "value" => "0"} [2026-06-17 11:08:01.660] [DEBUG] QUERY OK db=17.6ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "0", "mobile_data_mb", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307993, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:01.661] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:01.703] [DEBUG] QUERY OK db=40.4ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:10Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39373, ~N[2026-06-17 11:08:01], ~N[2026-06-17 11:08:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:01.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307994, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:10Z", message: nil, status_log_id: 39373, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:01], updated_at: ~N[2026-06-17 11:08:01]}} [2026-06-17 11:08:07.368] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:07.368] [INFO ] Incoming JSON payload: {"oid":"6d436293-c062-4b44-b3ec-22d8606e021f","sn":"98251226730002","uploadTime":"2026-06-17T11:07:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"ram_free_mb","value":"844","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"data_usage_mb","value":"7","timestamp":"2026-06-17T11:07:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07:17Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:07.369] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6d436293-c062-4b44-b3ec-22d8606e021f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:17Z", "value" => "844"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:17Z", "value" => "7"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:17Z", "vendor" => "morefun"} [2026-06-17 11:08:07.369] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:07.369] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:07.370] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:07.372] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=1315.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-06-17 11:08:07.373] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=314.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.`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-06-17 11:08:07.373] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:07.374] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:07.374] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:07.385] [DEBUG] QUERY OK source="tms_terminals" db=9.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:08:07], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:07.385] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:07.386] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=11.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:07.399] [DEBUG] QUERY OK source="tms_terminals" db=12.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:07], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:07.412] [DEBUG] QUERY OK db=12.3ms idle=13.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6d436293-c062-4b44-b3ec-22d8606e021f", "2026-06-17T11:07:17Z", ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:07.414] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39374, oid: "6d436293-c062-4b44-b3ec-22d8606e021f", upload_time: "2026-06-17T11:07:17Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]} [2026-06-17 11:08:07.414] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:17Z", "value" => "morefun"} [2026-06-17 11:08:07.425] [DEBUG] QUERY OK db=10.6ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "morefun", "vendor", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307995, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.426] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:17Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:07.436] [DEBUG] QUERY OK db=10.0ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "kiosk_launcher", "model", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307996, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.437] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:17Z", "value" => "1.0"} [2026-06-17 11:08:07.449] [DEBUG] QUERY OK db=11.2ms idle=12.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "1.0", "app_version", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307997, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.449] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:17Z", "value" => "13"} [2026-06-17 11:08:07.477] [DEBUG] QUERY OK db=27.7ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "13", "android_version", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307998, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.478] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:17Z", "value" => "844"} [2026-06-17 11:08:07.502] [DEBUG] QUERY OK db=23.4ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "844", "ram_free_mb", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 307999, itemkey: "ram_free_mb", value: "844", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.503] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:17Z", "value" => "WIFI"} [2026-06-17 11:08:07.522] [DEBUG] QUERY OK db=19.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "WIFI", "network_type", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308000, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.522] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:17Z", "value" => "true"} [2026-06-17 11:08:07.536] [DEBUG] QUERY OK db=13.5ms queue=0.1ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "true", "kiosk_active", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308001, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.537] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:17Z", "value" => ""} [2026-06-17 11:08:07.556] [DEBUG] QUERY OK db=18.7ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:17Z", "sim_operator", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308002, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.557] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"} [2026-06-17 11:08:07.570] [DEBUG] QUERY OK db=12.7ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "UNKNOWN", "sim_number", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308003, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.571] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"} [2026-06-17 11:08:07.584] [DEBUG] QUERY OK db=12.7ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "UNKNOWN", "sim_iccid", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308004, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.584] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"} [2026-06-17 11:08:07.599] [DEBUG] QUERY OK db=14.3ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "UNKNOWN", "sim_imsi", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308005, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.600] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"} [2026-06-17 11:08:07.613] [DEBUG] QUERY OK db=12.6ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "UNKNOWN", "sim_iccid2", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308006, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.613] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:17Z", "value" => "UNKNOWN"} [2026-06-17 11:08:07.626] [DEBUG] QUERY OK db=12.9ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "UNKNOWN", "sim_imsi2", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308007, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.627] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:17Z", "value" => "7"} [2026-06-17 11:08:07.644] [DEBUG] QUERY OK db=17.4ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "7", "data_usage_mb", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308008, itemkey: "data_usage_mb", value: "7", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.645] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:17Z", "value" => "0"} [2026-06-17 11:08:07.659] [DEBUG] QUERY OK db=13.3ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "0", "mobile_data_mb", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308009, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:07.659] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:07.674] [DEBUG] QUERY OK db=13.6ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39374, ~N[2026-06-17 11:08:07], ~N[2026-06-17 11:08:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:07.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308010, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:17Z", message: nil, status_log_id: 39374, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:07], updated_at: ~N[2026-06-17 11:08:07]}} [2026-06-17 11:08:12.361] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:12.361] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T11:07:22Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T11:07:22Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T11:07:22Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T11:07:22Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T11:07:22Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T11:07:22Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T11:07:22Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T11:07:22Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T11:07:22Z","vendor":"MoreFun"} [2026-06-17 11:08:12.363] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T11:07:22Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T11:07:22Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T11:07:22Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T11:07:22Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T11:07:22Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T11:07:22Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T11:07:22Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T11:07:22Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:22Z", "vendor" => "MoreFun"} [2026-06-17 11:08:12.363] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 11:08:12.363] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:12.363] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 11:08:12.367] [DEBUG] QUERY OK source="parameter_templates" db=3.5ms idle=941.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-06-17 11:08:12.369] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=292.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 11:08:12.371] [DEBUG] QUERY OK source="parameter_template_values" db=1.9ms 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-06-17 11:08:12.374] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.9ms idle=3.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-06-17 11:08:12.376] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms idle=4.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 11:08:12.414] [DEBUG] QUERY OK source="pos_merchant" db=37.3ms queue=1.3ms idle=2.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 11:08:12.417] [DEBUG] QUERY OK db=0.8ms queue=1.3ms idle=1048.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 ["372916040000000"] [2026-06-17 11:08:12.417] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 11:08:12.419] [DEBUG] QUERY OK source="pos_terminal_data" db=1.4ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 11:08:12.422] [DEBUG] QUERY OK source="address" db=2.6ms idle=4.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 11:08:12.422] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 11:08:12.432] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 11:08:12.450] [DEBUG] QUERY OK db=15.6ms idle=14.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", "eb2dbaf8d5baf0f6d6759760d9189f3e2a3abad4696cb5583ecab93e00d6384f", 3525, 940, ~U[2026-06-17 11:08:12Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 11:08:12.450] [INFO ] AutoPushService: Created push log 29759 for MF919 params.zip [2026-06-17 11:08:12.451] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 3525, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 11:08:12.451] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 11:08:12.452] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 11:08:12.455] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms idle=32.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-06-17 11:08:12.474] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 11:08:12.489] [DEBUG] QUERY OK db=13.5ms idle=26.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", "3180e032964c4907d0fad0d37be1871a9e049ab70267eb5c40232671a454fcfe", 3874, 17947, ~U[2026-06-17 11:08:12Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 11:08:12.490] [INFO ] AutoPushService: Created push log 29760 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 11:08:12.490] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3874, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 11:08:12.490] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 11:08:12.491] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 11:08:12.495] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms queue=1.2ms idle=36.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-06-17 11:08:12.495] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 11:08:12.498] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=6.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 11:08:12.501] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 11:08:12.507] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 11:08:12.507] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 11:08:12.507] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 11:08:12.512] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=14.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-06-17 11:08:12.512] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 11:08:12.512] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 11:08:12.514] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=14.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:12.569] [DEBUG] QUERY OK source="tms_terminals" db=12.8ms queue=41.3ms idle=2.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 11:08:12], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 11:08:12.569] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:12.569] [INFO ] Event published: terminal_updated [2026-06-17 11:08:12.569] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 11:08:12.569] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 11:08:12.569] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 11:08:12.570] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms idle=55.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-06-17 11:08:12], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 11:08:12.571] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 11:08:12.572] [DEBUG] QUERY OK source="terminal_group_rules" db=0.8ms 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-06-17 11:08:12.572] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 11:08:12.624] [DEBUG] QUERY OK source="tms_terminals" db=12.6ms queue=41.1ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", ~N[2026-06-17 11:08:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:12.624] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:12.627] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=54.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:12.686] [DEBUG] QUERY OK source="tms_terminals" db=14.7ms queue=43.8ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:12.703] [DEBUG] QUERY OK db=16.7ms idle=59.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T11:07:22Z", ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:12.704] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39375, oid: "organization_id", upload_time: "2026-06-17T11:07:22Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]} [2026-06-17 11:08:12.704] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T11:07:22Z", "value" => "online"} [2026-06-17 11:08:12.720] [DEBUG] QUERY OK db=16.2ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T11:07:22Z", "online", "status", 39375, ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:12.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308011, itemkey: "status", value: "online", timestamp: "2026-06-17T11:07:22Z", message: "Terminal status update", status_log_id: 39375, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]}} [2026-06-17 11:08:12.721] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 11:08:12.721] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T11:07:22Z", "value" => "42"} [2026-06-17 11:08:12.735] [DEBUG] QUERY OK db=14.0ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T11:07:22Z", "42", "battery", 39375, ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:12.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308012, itemkey: "battery", value: "42", timestamp: "2026-06-17T11:07:22Z", message: "Battery level", status_log_id: 39375, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]}} [2026-06-17 11:08:12.736] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T11:07:22Z", "value" => "online"} [2026-06-17 11:08:12.752] [DEBUG] QUERY OK db=15.8ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T11:07:22Z", "online", "network", 39375, ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:12.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308013, itemkey: "network", value: "online", timestamp: "2026-06-17T11:07:22Z", message: "Network connectivity", status_log_id: 39375, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]}} [2026-06-17 11:08:12.752] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 11:08:12.752] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T11:07:22Z", "value" => "0"} [2026-06-17 11:08:12.767] [DEBUG] QUERY OK db=14.0ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T11:07:22Z", "0", "cpu", 39375, ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:12.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308014, itemkey: "cpu", value: "0", timestamp: "2026-06-17T11:07:22Z", message: "CPU usage percentage", status_log_id: 39375, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]}} [2026-06-17 11:08:12.767] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T11:07:22Z", "value" => ""} [2026-06-17 11:08:12.825] [DEBUG] QUERY OK db=13.4ms queue=43.7ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T11:07:22Z", "parameter_config", 39375, ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:12.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308015, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T11:07:22Z", message: "Current parameters version", status_log_id: 39375, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]}} [2026-06-17 11:08:12.827] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T11:07:22Z", "value" => ""} [2026-06-17 11:08:12.886] [DEBUG] QUERY OK db=17.6ms queue=40.8ms idle=60.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T11:07:22Z", "emv_config", 39375, ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:12.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308016, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T11:07:22Z", message: "Current EMV config version", status_log_id: 39375, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]}} [2026-06-17 11:08:12.886] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T11:07:22Z", "value" => ""} [2026-06-17 11:08:12.902] [DEBUG] QUERY OK db=14.7ms queue=0.1ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T11:07:22Z", "keys_config", 39375, ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:12.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308017, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T11:07:22Z", message: "Current keys config version", status_log_id: 39375, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]}} [2026-06-17 11:08:12.903] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T11:07:22Z", "value" => ""} [2026-06-17 11:08:12.921] [DEBUG] QUERY OK db=16.9ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T11:07:22Z", "application", 39375, ~N[2026-06-17 11:08:12], ~N[2026-06-17 11:08:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:12.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308018, itemkey: "application", value: nil, timestamp: "2026-06-17T11:07:22Z", message: "Current application version", status_log_id: 39375, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:12], updated_at: ~N[2026-06-17 11:08:12]}} [2026-06-17 11:08:12.923] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T11:07:22Z"} [2026-06-17 11:08:12.923] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T11:07:22Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 166, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 11:08:13.441] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:13.441] [INFO ] Incoming JSON payload: {"oid":"76dfb8c3-84b5-43c6-b2a6-ee66b9610c7c","sn":"98251226730002","uploadTime":"2026-06-17T11:07:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:07:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07:23Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:13.443] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "76dfb8c3-84b5-43c6-b2a6-ee66b9610c7c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:23Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:23Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:23Z", "vendor" => "morefun"} [2026-06-17 11:08:13.443] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:13.443] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:13.443] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:13.444] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=522.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-06-17 11:08:13.445] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=365.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-06-17 11:08:13.445] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:13.446] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:13.521] [DEBUG] QUERY OK source="tms_terminals" db=33.0ms queue=42.0ms idle=1.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 11:08:13], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 11:08:13.521] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:13.521] [INFO ] Event published: terminal_updated [2026-06-17 11:08:13.522] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 11:08:13.522] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms idle=75.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-06-17 11:08:13], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 11:08:13.522] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 11:08:13.523] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 11:08:13.523] [DEBUG] QUERY OK source="tms_terminals" db=0.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 WHERE (t0.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 11:08:13.524] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=0.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_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-06-17 11:08:13.524] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 11:08:13.579] [DEBUG] QUERY OK source="tms_terminals" db=15.8ms queue=40.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", ~N[2026-06-17 11:08:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:13.579] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:13.581] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=55.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:13.636] [DEBUG] QUERY OK source="tms_terminals" db=13.6ms queue=41.0ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:13.656] [DEBUG] QUERY OK db=19.3ms idle=55.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "76dfb8c3-84b5-43c6-b2a6-ee66b9610c7c", "2026-06-17T11:07:23Z", ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:13.656] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39376, oid: "76dfb8c3-84b5-43c6-b2a6-ee66b9610c7c", upload_time: "2026-06-17T11:07:23Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]} [2026-06-17 11:08:13.656] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:23Z", "value" => "morefun"} [2026-06-17 11:08:13.722] [DEBUG] QUERY OK db=22.8ms queue=41.9ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "morefun", "vendor", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308019, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.723] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:23Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:13.780] [DEBUG] QUERY OK db=14.1ms queue=43.2ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "kiosk_launcher", "model", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308020, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.781] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:23Z", "value" => "1.0"} [2026-06-17 11:08:13.792] [DEBUG] QUERY OK db=10.9ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "1.0", "app_version", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308021, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.793] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:23Z", "value" => "13"} [2026-06-17 11:08:13.817] [DEBUG] QUERY OK db=23.6ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "13", "android_version", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308022, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.818] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:23Z", "value" => "764"} [2026-06-17 11:08:13.864] [DEBUG] QUERY OK db=46.0ms queue=0.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "764", "ram_free_mb", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308023, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.866] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:23Z", "value" => "WIFI"} [2026-06-17 11:08:13.877] [DEBUG] QUERY OK db=10.6ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "WIFI", "network_type", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308024, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.877] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:23Z", "value" => "true"} [2026-06-17 11:08:13.889] [DEBUG] QUERY OK db=11.0ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "true", "kiosk_active", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308025, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.889] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:23Z", "value" => ""} [2026-06-17 11:08:13.913] [DEBUG] QUERY OK db=23.7ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:23Z", "sim_operator", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308026, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.914] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"} [2026-06-17 11:08:13.947] [DEBUG] QUERY OK db=32.9ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "UNKNOWN", "sim_number", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308027, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.948] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"} [2026-06-17 11:08:13.970] [DEBUG] QUERY OK db=21.8ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "UNKNOWN", "sim_iccid", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308028, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.971] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"} [2026-06-17 11:08:13.984] [DEBUG] QUERY OK db=12.9ms queue=0.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "UNKNOWN", "sim_imsi", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:13.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308029, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:13.985] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"} [2026-06-17 11:08:14.001] [DEBUG] QUERY OK db=15.8ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "UNKNOWN", "sim_iccid2", 39376, ~N[2026-06-17 11:08:13], ~N[2026-06-17 11:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:14.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308030, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:13], updated_at: ~N[2026-06-17 11:08:13]}} [2026-06-17 11:08:14.003] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:23Z", "value" => "UNKNOWN"} [2026-06-17 11:08:14.036] [DEBUG] QUERY OK db=31.6ms queue=0.6ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "UNKNOWN", "sim_imsi2", 39376, ~N[2026-06-17 11:08:14], ~N[2026-06-17 11:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:14.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308031, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:14], updated_at: ~N[2026-06-17 11:08:14]}} [2026-06-17 11:08:14.036] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:23Z", "value" => "8"} [2026-06-17 11:08:14.061] [DEBUG] QUERY OK db=25.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "8", "data_usage_mb", 39376, ~N[2026-06-17 11:08:14], ~N[2026-06-17 11:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:14.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308032, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:14], updated_at: ~N[2026-06-17 11:08:14]}} [2026-06-17 11:08:14.062] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:23Z", "value" => "0"} [2026-06-17 11:08:14.073] [DEBUG] QUERY OK db=10.9ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "0", "mobile_data_mb", 39376, ~N[2026-06-17 11:08:14], ~N[2026-06-17 11:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:14.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308033, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:14], updated_at: ~N[2026-06-17 11:08:14]}} [2026-06-17 11:08:14.074] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:14.093] [DEBUG] QUERY OK db=17.5ms queue=0.1ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:23Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39376, ~N[2026-06-17 11:08:14], ~N[2026-06-17 11:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:14.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308034, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:23Z", message: nil, status_log_id: 39376, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:14], updated_at: ~N[2026-06-17 11:08:14]}} [2026-06-17 11:08:19.534] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:19.534] [INFO ] Incoming JSON payload: {"oid":"920bf8b7-9fd4-4130-a3b9-d73152dd592e","sn":"98251226730002","uploadTime":"2026-06-17T11:07:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"ram_free_mb","value":"778","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:07:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07:29Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:19.535] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "920bf8b7-9fd4-4130-a3b9-d73152dd592e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:29Z", "value" => "778"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:29Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:29Z", "vendor" => "morefun"} [2026-06-17 11:08:19.535] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:19.535] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:19.535] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:19.538] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=1113.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-06-17 11:08:19.538] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=438.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-06-17 11:08:19.538] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:19.539] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:19.540] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:19.592] [DEBUG] QUERY OK source="tms_terminals" db=10.7ms queue=41.4ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:08:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:19.592] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:19.593] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=53.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:19.626] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:19.648] [DEBUG] QUERY OK db=21.7ms idle=32.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "920bf8b7-9fd4-4130-a3b9-d73152dd592e", "2026-06-17T11:07:29Z", ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:19.649] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39377, oid: "920bf8b7-9fd4-4130-a3b9-d73152dd592e", upload_time: "2026-06-17T11:07:29Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]} [2026-06-17 11:08:19.649] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:29Z", "value" => "morefun"} [2026-06-17 11:08:19.666] [DEBUG] QUERY OK db=15.4ms queue=0.5ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "morefun", "vendor", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308035, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.666] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:29Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:19.682] [DEBUG] QUERY OK db=14.6ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "kiosk_launcher", "model", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308036, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.682] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:29Z", "value" => "1.0"} [2026-06-17 11:08:19.706] [DEBUG] QUERY OK db=23.6ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "1.0", "app_version", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308037, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.707] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:29Z", "value" => "13"} [2026-06-17 11:08:19.729] [DEBUG] QUERY OK db=22.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "13", "android_version", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308038, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.730] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:29Z", "value" => "778"} [2026-06-17 11:08:19.751] [DEBUG] QUERY OK db=20.3ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "778", "ram_free_mb", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308039, itemkey: "ram_free_mb", value: "778", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.752] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:29Z", "value" => "WIFI"} [2026-06-17 11:08:19.767] [DEBUG] QUERY OK db=14.6ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "WIFI", "network_type", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308040, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.768] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:29Z", "value" => "true"} [2026-06-17 11:08:19.782] [DEBUG] QUERY OK db=14.0ms queue=0.1ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "true", "kiosk_active", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308041, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.783] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:29Z", "value" => ""} [2026-06-17 11:08:19.816] [DEBUG] QUERY OK db=32.4ms queue=0.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:29Z", "sim_operator", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308042, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.816] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"} [2026-06-17 11:08:19.839] [DEBUG] QUERY OK db=22.5ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "UNKNOWN", "sim_number", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.840] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308043, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.840] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"} [2026-06-17 11:08:19.854] [DEBUG] QUERY OK db=13.5ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "UNKNOWN", "sim_iccid", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308044, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.855] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"} [2026-06-17 11:08:19.867] [DEBUG] QUERY OK db=11.0ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "UNKNOWN", "sim_imsi", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308045, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.868] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"} [2026-06-17 11:08:19.889] [DEBUG] QUERY OK db=20.8ms queue=0.1ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "UNKNOWN", "sim_iccid2", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308046, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.890] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:29Z", "value" => "UNKNOWN"} [2026-06-17 11:08:19.921] [DEBUG] QUERY OK db=31.3ms queue=0.1ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "UNKNOWN", "sim_imsi2", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308047, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.922] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:29Z", "value" => "8"} [2026-06-17 11:08:19.943] [DEBUG] QUERY OK db=20.4ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "8", "data_usage_mb", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308048, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.943] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:29Z", "value" => "0"} [2026-06-17 11:08:19.957] [DEBUG] QUERY OK db=12.6ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "0", "mobile_data_mb", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308049, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:19.957] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:19.969] [DEBUG] QUERY OK db=10.9ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:29Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39377, ~N[2026-06-17 11:08:19], ~N[2026-06-17 11:08:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:19.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308050, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:29Z", message: nil, status_log_id: 39377, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:19], updated_at: ~N[2026-06-17 11:08:19]}} [2026-06-17 11:08:25.854] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:25.854] [INFO ] Incoming JSON payload: {"oid":"bddaf2e9-28fd-410c-aa24-a63c1dba2b9e","sn":"98251226730002","uploadTime":"2026-06-17T11:07:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"ram_free_mb","value":"773","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:07:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07:35Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:25.855] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bddaf2e9-28fd-410c-aa24-a63c1dba2b9e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:35Z", "value" => "773"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:35Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:35Z", "vendor" => "morefun"} [2026-06-17 11:08:25.855] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:25.855] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:25.855] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:25.858] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=735.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:08:25.858] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=436.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-06-17 11:08:25.859] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:25.860] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:25.860] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:25.874] [DEBUG] QUERY OK source="tms_terminals" db=11.7ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:08:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:25.874] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:25.878] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=14.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:25.908] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms queue=0.1ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:25], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:25.942] [DEBUG] QUERY OK db=33.2ms queue=0.2ms idle=31.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "bddaf2e9-28fd-410c-aa24-a63c1dba2b9e", "2026-06-17T11:07:35Z", ~N[2026-06-17 11:08:25], ~N[2026-06-17 11:08:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:25.942] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39378, oid: "bddaf2e9-28fd-410c-aa24-a63c1dba2b9e", upload_time: "2026-06-17T11:07:35Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:25], updated_at: ~N[2026-06-17 11:08:25]} [2026-06-17 11:08:25.943] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:35Z", "value" => "morefun"} [2026-06-17 11:08:25.958] [DEBUG] QUERY OK db=15.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "morefun", "vendor", 39378, ~N[2026-06-17 11:08:25], ~N[2026-06-17 11:08:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:25.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308051, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:25], updated_at: ~N[2026-06-17 11:08:25]}} [2026-06-17 11:08:25.958] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:35Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:25.979] [DEBUG] QUERY OK db=20.4ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "kiosk_launcher", "model", 39378, ~N[2026-06-17 11:08:25], ~N[2026-06-17 11:08:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:25.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308052, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:25], updated_at: ~N[2026-06-17 11:08:25]}} [2026-06-17 11:08:25.979] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:35Z", "value" => "1.0"} [2026-06-17 11:08:25.997] [DEBUG] QUERY OK db=17.5ms queue=0.1ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "1.0", "app_version", 39378, ~N[2026-06-17 11:08:25], ~N[2026-06-17 11:08:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:25.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308053, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:25], updated_at: ~N[2026-06-17 11:08:25]}} [2026-06-17 11:08:25.998] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:35Z", "value" => "13"} [2026-06-17 11:08:26.021] [DEBUG] QUERY OK db=23.4ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "13", "android_version", 39378, ~N[2026-06-17 11:08:25], ~N[2026-06-17 11:08:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308054, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:25], updated_at: ~N[2026-06-17 11:08:25]}} [2026-06-17 11:08:26.022] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:35Z", "value" => "773"} [2026-06-17 11:08:26.046] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "773", "ram_free_mb", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.046] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308055, itemkey: "ram_free_mb", value: "773", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.046] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:35Z", "value" => "WIFI"} [2026-06-17 11:08:26.065] [DEBUG] QUERY OK db=19.0ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "WIFI", "network_type", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308056, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.066] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:35Z", "value" => "true"} [2026-06-17 11:08:26.083] [DEBUG] QUERY OK db=16.9ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "true", "kiosk_active", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308057, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.085] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:35Z", "value" => ""} [2026-06-17 11:08:26.109] [DEBUG] QUERY OK db=23.4ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:35Z", "sim_operator", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308058, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.109] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"} [2026-06-17 11:08:26.143] [DEBUG] QUERY OK db=24.6ms queue=9.2ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "UNKNOWN", "sim_number", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308059, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.144] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"} [2026-06-17 11:08:26.164] [DEBUG] QUERY OK db=19.7ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "UNKNOWN", "sim_iccid", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308060, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.165] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"} [2026-06-17 11:08:26.177] [DEBUG] QUERY OK db=11.8ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "UNKNOWN", "sim_imsi", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308061, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.177] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"} [2026-06-17 11:08:26.211] [DEBUG] QUERY OK db=33.1ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "UNKNOWN", "sim_iccid2", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308062, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.211] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:35Z", "value" => "UNKNOWN"} [2026-06-17 11:08:26.235] [DEBUG] QUERY OK db=23.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "UNKNOWN", "sim_imsi2", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308063, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.236] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:35Z", "value" => "8"} [2026-06-17 11:08:26.254] [DEBUG] QUERY OK db=18.0ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "8", "data_usage_mb", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308064, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.254] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:35Z", "value" => "0"} [2026-06-17 11:08:26.265] [DEBUG] QUERY OK db=10.6ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "0", "mobile_data_mb", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308065, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:26.266] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:26.291] [DEBUG] QUERY OK db=23.9ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:35Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39378, ~N[2026-06-17 11:08:26], ~N[2026-06-17 11:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:26.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308066, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:35Z", message: nil, status_log_id: 39378, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:26], updated_at: ~N[2026-06-17 11:08:26]}} [2026-06-17 11:08:31.923] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:31.923] [INFO ] Incoming JSON payload: {"oid":"d0b2f2a3-ed36-485e-ab6c-474b23a582fd","sn":"98251226730002","uploadTime":"2026-06-17T11:07:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"ram_free_mb","value":"770","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:07:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07:41Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:31.925] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d0b2f2a3-ed36-485e-ab6c-474b23a582fd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:41Z", "value" => "770"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:41Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:41Z", "vendor" => "morefun"} [2026-06-17 11:08:31.926] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:31.926] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:31.926] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:31.926] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=781.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-06-17 11:08:31.927] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=569.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-06-17 11:08:31.927] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:31.928] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:31.928] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:31.948] [DEBUG] QUERY OK source="tms_terminals" db=18.5ms queue=0.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:08:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:31.948] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:31.949] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=20.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:31.973] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:31], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:32.006] [DEBUG] QUERY OK db=32.5ms idle=24.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d0b2f2a3-ed36-485e-ab6c-474b23a582fd", "2026-06-17T11:07:41Z", ~N[2026-06-17 11:08:31], ~N[2026-06-17 11:08:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:32.006] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39379, oid: "d0b2f2a3-ed36-485e-ab6c-474b23a582fd", upload_time: "2026-06-17T11:07:41Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:31], updated_at: ~N[2026-06-17 11:08:31]} [2026-06-17 11:08:32.007] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:41Z", "value" => "morefun"} [2026-06-17 11:08:32.019] [DEBUG] QUERY OK db=11.9ms queue=0.1ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "morefun", "vendor", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308067, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.019] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:41Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:32.035] [DEBUG] QUERY OK db=15.4ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "kiosk_launcher", "model", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308068, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.036] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:41Z", "value" => "1.0"} [2026-06-17 11:08:32.064] [DEBUG] QUERY OK db=27.5ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "1.0", "app_version", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308069, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.064] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:41Z", "value" => "13"} [2026-06-17 11:08:32.097] [DEBUG] QUERY OK db=32.3ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "13", "android_version", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308070, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.099] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:41Z", "value" => "770"} [2026-06-17 11:08:32.113] [DEBUG] QUERY OK db=13.7ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "770", "ram_free_mb", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308071, itemkey: "ram_free_mb", value: "770", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.114] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:41Z", "value" => "WIFI"} [2026-06-17 11:08:32.126] [DEBUG] QUERY OK db=12.0ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "WIFI", "network_type", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308072, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.126] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:41Z", "value" => "true"} [2026-06-17 11:08:32.150] [DEBUG] QUERY OK db=22.9ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "true", "kiosk_active", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308073, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.152] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:41Z", "value" => ""} [2026-06-17 11:08:32.186] [DEBUG] QUERY OK db=29.5ms queue=4.0ms idle=2.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:41Z", "sim_operator", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308074, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.186] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"} [2026-06-17 11:08:32.215] [DEBUG] QUERY OK db=28.2ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "UNKNOWN", "sim_number", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308075, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.217] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"} [2026-06-17 11:08:32.236] [DEBUG] QUERY OK db=14.2ms queue=1.1ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "UNKNOWN", "sim_iccid", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308076, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.242] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"} [2026-06-17 11:08:32.268] [DEBUG] QUERY OK db=25.1ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "UNKNOWN", "sim_imsi", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308077, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.268] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"} [2026-06-17 11:08:32.303] [DEBUG] QUERY OK db=34.0ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "UNKNOWN", "sim_iccid2", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308078, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.303] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:41Z", "value" => "UNKNOWN"} [2026-06-17 11:08:32.319] [DEBUG] QUERY OK db=15.5ms queue=0.1ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "UNKNOWN", "sim_imsi2", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308079, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.320] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:41Z", "value" => "8"} [2026-06-17 11:08:32.339] [DEBUG] QUERY OK db=18.7ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "8", "data_usage_mb", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308080, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.339] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:41Z", "value" => "0"} [2026-06-17 11:08:32.379] [DEBUG] QUERY OK db=39.3ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "0", "mobile_data_mb", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308081, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.381] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:32.412] [DEBUG] QUERY OK db=29.2ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:41Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39379, ~N[2026-06-17 11:08:32], ~N[2026-06-17 11:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:32.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308082, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:41Z", message: nil, status_log_id: 39379, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:32], updated_at: ~N[2026-06-17 11:08:32]}} [2026-06-17 11:08:32.857] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T11:07:22Z"} [2026-06-17 11:08:32.857] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T11:07:22Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 167, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 11:08:34.449] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:34.449] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T11:07:44Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T11:07:44Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T11:07:44Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T11:07:44Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T11:07:44Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T11:07:44Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T11:07:44Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T11:07:44Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T11:07:44Z","vendor":"MoreFun"} [2026-06-17 11:08:34.450] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T11:07:44Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T11:07:44Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T11:07:44Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T11:07:44Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T11:07:44Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T11:07:44Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T11:07:44Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T11:07:44Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:44Z", "vendor" => "MoreFun"} [2026-06-17 11:08:34.450] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 11:08:34.450] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:34.450] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 11:08:34.455] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms queue=0.2ms idle=1028.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-06-17 11:08:34.458] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=1.7ms idle=294.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 11:08:34.461] [DEBUG] QUERY OK source="parameter_template_values" db=2.7ms idle=4.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-06-17 11:08:34.464] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=1.1ms idle=3.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-06-17 11:08:34.466] [DEBUG] QUERY OK source="pos_terminal" db=2.0ms idle=3.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 11:08:34.505] [DEBUG] QUERY OK source="pos_merchant" db=37.9ms idle=2.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 11:08:34.506] [DEBUG] QUERY OK db=0.9ms queue=0.6ms idle=1133.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 ["372916040000000"] [2026-06-17 11:08:34.507] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 11:08:34.509] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=42.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 11:08:34.510] [DEBUG] QUERY OK source="address" db=0.4ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 11:08:34.510] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 11:08:34.512] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 11:08:34.539] [DEBUG] QUERY OK db=25.4ms idle=4.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", "a1239d32774bf81a7f8d4ea77cbf120c0dcee24863e4a683c56315caacb49281", 3331, 940, ~U[2026-06-17 11:08:34Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 11:08:34.539] [INFO ] AutoPushService: Created push log 29761 for MF919 params.zip [2026-06-17 11:08:34.539] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 3331, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 11:08:34.540] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 11:08:34.540] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 11:08:34.545] [DEBUG] QUERY OK source="config_file_versions" db=4.5ms idle=30.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-06-17 11:08:34.552] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 11:08:34.587] [DEBUG] QUERY OK db=31.9ms idle=15.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", "e900036831f08fc943ee3bd90cf7b5ac188cc11db336a71cbcb3fdf506cce2eb", 3621, 17947, ~U[2026-06-17 11:08:34Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 11:08:34.587] [INFO ] AutoPushService: Created push log 29762 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 11:08:34.587] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3621, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 11:08:34.587] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 11:08:34.587] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 11:08:34.591] [DEBUG] QUERY OK source="config_file_versions" db=3.9ms idle=42.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-06-17 11:08:34.592] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 11:08:34.596] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 11:08:34.596] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 11:08:34.599] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 11:08:34.599] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 11:08:34.600] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 11:08:34.600] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-06-17 11:08:34.601] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 11:08:34.601] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 11:08:34.602] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=5.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:34.657] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms queue=40.9ms idle=2.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 11:08:34], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 11:08:34.658] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:34.658] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 11:08:34.658] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 11:08:34.658] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 11:08:34.658] [INFO ] Event published: terminal_updated [2026-06-17 11:08:34.659] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=56.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-06-17 11:08:34], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 11:08:34.660] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 11:08:34.661] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=0.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_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-06-17 11:08:34.661] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 11:08:34.717] [DEBUG] QUERY OK source="tms_terminals" db=15.7ms queue=41.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 11:08:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:34.718] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=56.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-06-17 11:08:34.720] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms 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-06-17 11:08:34.720] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:34.721] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:34.776] [DEBUG] QUERY OK source="tms_terminals" db=13.1ms queue=41.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:34.806] [DEBUG] QUERY OK db=29.8ms queue=0.1ms idle=55.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T11:07:44Z", ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:34.807] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39380, oid: "organization_id", upload_time: "2026-06-17T11:07:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:34], updated_at: ~N[2026-06-17 11:08:34]} [2026-06-17 11:08:34.807] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T11:07:44Z", "value" => "online"} [2026-06-17 11:08:34.831] [DEBUG] QUERY OK db=23.3ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T11:07:44Z", "online", "status", 39380, ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:34.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308083, itemkey: "status", value: "online", timestamp: "2026-06-17T11:07:44Z", message: "Terminal status update", status_log_id: 39380, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:34], updated_at: ~N[2026-06-17 11:08:34]}} [2026-06-17 11:08:34.831] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 11:08:34.832] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T11:07:44Z", "value" => "42"} [2026-06-17 11:08:34.854] [DEBUG] QUERY OK db=21.6ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T11:07:44Z", "42", "battery", 39380, ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:34.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308084, itemkey: "battery", value: "42", timestamp: "2026-06-17T11:07:44Z", message: "Battery level", status_log_id: 39380, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:34], updated_at: ~N[2026-06-17 11:08:34]}} [2026-06-17 11:08:34.854] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T11:07:44Z", "value" => "online"} [2026-06-17 11:08:34.869] [DEBUG] QUERY OK db=13.5ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T11:07:44Z", "online", "network", 39380, ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:34.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308085, itemkey: "network", value: "online", timestamp: "2026-06-17T11:07:44Z", message: "Network connectivity", status_log_id: 39380, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:34], updated_at: ~N[2026-06-17 11:08:34]}} [2026-06-17 11:08:34.869] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 11:08:34.869] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T11:07:44Z", "value" => "0"} [2026-06-17 11:08:34.896] [DEBUG] QUERY OK db=26.5ms queue=0.1ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T11:07:44Z", "0", "cpu", 39380, ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:34.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308086, itemkey: "cpu", value: "0", timestamp: "2026-06-17T11:07:44Z", message: "CPU usage percentage", status_log_id: 39380, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:34], updated_at: ~N[2026-06-17 11:08:34]}} [2026-06-17 11:08:34.896] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T11:07:44Z", "value" => "1.0.0"} [2026-06-17 11:08:34.921] [DEBUG] QUERY OK db=23.8ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T11:07:44Z", "1.0.0", "parameter_config", 39380, ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:34.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308087, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T11:07:44Z", message: "Current parameters version", status_log_id: 39380, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:34], updated_at: ~N[2026-06-17 11:08:34]}} [2026-06-17 11:08:34.921] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T11:07:44Z", "value" => "1.0.1"} [2026-06-17 11:08:34.947] [DEBUG] QUERY OK db=25.5ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T11:07:44Z", "1.0.1", "emv_config", 39380, ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:34.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308088, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T11:07:44Z", message: "Current EMV config version", status_log_id: 39380, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:34], updated_at: ~N[2026-06-17 11:08:34]}} [2026-06-17 11:08:34.947] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T11:07:44Z", "value" => ""} [2026-06-17 11:08:35.002] [DEBUG] QUERY OK db=11.0ms queue=41.0ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T11:07:44Z", "keys_config", 39380, ~N[2026-06-17 11:08:34], ~N[2026-06-17 11:08:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:35.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308089, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T11:07:44Z", message: "Current keys config version", status_log_id: 39380, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:34], updated_at: ~N[2026-06-17 11:08:34]}} [2026-06-17 11:08:35.003] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T11:07:44Z", "value" => ""} [2026-06-17 11:08:35.070] [DEBUG] QUERY OK db=24.2ms queue=42.1ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T11:07:44Z", "application", 39380, ~N[2026-06-17 11:08:35], ~N[2026-06-17 11:08:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:35.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308090, itemkey: "application", value: nil, timestamp: "2026-06-17T11:07:44Z", message: "Current application version", status_log_id: 39380, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:35], updated_at: ~N[2026-06-17 11:08:35]}} [2026-06-17 11:08:35.071] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T11:07:44Z"} [2026-06-17 11:08:35.071] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T11:07:44Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 173, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 11:08:37.980] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:37.981] [INFO ] Incoming JSON payload: {"oid":"be71b9cf-8d01-45d7-86bf-3e11b87750b3","sn":"98251226730002","uploadTime":"2026-06-17T11:07:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:07:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07:48Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:37.985] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "be71b9cf-8d01-45d7-86bf-3e11b87750b3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:48Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:48Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:48Z", "vendor" => "morefun"} [2026-06-17 11:08:37.986] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:37.987] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:37.987] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:37.991] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=3.1ms idle=1563.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-06-17 11:08:37.994] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=823.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.`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-06-17 11:08:37.995] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:37.998] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=2.0ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:38.019] [DEBUG] QUERY OK source="tms_terminals" db=20.0ms idle=4.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 11:08:37], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 11:08:38.019] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:38.020] [INFO ] Event published: terminal_updated [2026-06-17 11:08:38.020] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 11:08:38.020] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 11:08:38.020] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 11:08:38.020] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=21.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-06-17 11:08:38], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 11:08:38.022] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.4ms idle=2.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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 11:08:38.023] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.7ms 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-06-17 11:08:38.023] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 11:08:38.075] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms queue=42.8ms idle=0.7ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 11:08:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:38.075] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:38.076] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:38.146] [DEBUG] QUERY OK source="tms_terminals" db=25.9ms queue=43.0ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:38], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:38.171] [DEBUG] QUERY OK db=24.7ms idle=70.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "be71b9cf-8d01-45d7-86bf-3e11b87750b3", "2026-06-17T11:07:48Z", ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:38.173] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39381, oid: "be71b9cf-8d01-45d7-86bf-3e11b87750b3", upload_time: "2026-06-17T11:07:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]} [2026-06-17 11:08:38.174] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:48Z", "value" => "morefun"} [2026-06-17 11:08:38.228] [DEBUG] QUERY OK db=11.8ms queue=42.3ms idle=2.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "morefun", "vendor", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308091, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.229] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:48Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:38.288] [DEBUG] QUERY OK db=16.8ms queue=42.5ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "kiosk_launcher", "model", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308092, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.289] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:48Z", "value" => "1.0"} [2026-06-17 11:08:38.313] [DEBUG] QUERY OK db=23.8ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "1.0", "app_version", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308093, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.313] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:48Z", "value" => "13"} [2026-06-17 11:08:38.345] [DEBUG] QUERY OK db=31.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "13", "android_version", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308094, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.345] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:48Z", "value" => "762"} [2026-06-17 11:08:38.378] [DEBUG] QUERY OK db=32.3ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "762", "ram_free_mb", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308095, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.378] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:48Z", "value" => "WIFI"} [2026-06-17 11:08:38.422] [DEBUG] QUERY OK db=42.6ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "WIFI", "network_type", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308096, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.422] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:48Z", "value" => "true"} [2026-06-17 11:08:38.467] [DEBUG] QUERY OK db=45.0ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "true", "kiosk_active", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308097, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.468] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:48Z", "value" => ""} [2026-06-17 11:08:38.494] [DEBUG] QUERY OK db=22.8ms queue=3.4ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:48Z", "sim_operator", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308098, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.495] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"} [2026-06-17 11:08:38.524] [DEBUG] QUERY OK db=28.8ms queue=0.1ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "UNKNOWN", "sim_number", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308099, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.525] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"} [2026-06-17 11:08:38.541] [DEBUG] QUERY OK db=15.6ms queue=0.1ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "UNKNOWN", "sim_iccid", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308100, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.541] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"} [2026-06-17 11:08:38.558] [DEBUG] QUERY OK db=16.4ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "UNKNOWN", "sim_imsi", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308101, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.559] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"} [2026-06-17 11:08:38.584] [DEBUG] QUERY OK db=25.1ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "UNKNOWN", "sim_iccid2", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308102, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.585] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:48Z", "value" => "UNKNOWN"} [2026-06-17 11:08:38.619] [DEBUG] QUERY OK db=34.3ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "UNKNOWN", "sim_imsi2", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308103, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.620] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:48Z", "value" => "8"} [2026-06-17 11:08:38.631] [DEBUG] QUERY OK db=11.0ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "8", "data_usage_mb", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308104, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.632] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:48Z", "value" => "0"} [2026-06-17 11:08:38.644] [DEBUG] QUERY OK db=11.7ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "0", "mobile_data_mb", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308105, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:38.645] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:38.666] [DEBUG] QUERY OK db=18.9ms queue=0.1ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:48Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39381, ~N[2026-06-17 11:08:38], ~N[2026-06-17 11:08:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:38.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308106, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:48Z", message: nil, status_log_id: 39381, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:38], updated_at: ~N[2026-06-17 11:08:38]}} [2026-06-17 11:08:43.471] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:43.471] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T11:07:53Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T11:07:53Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T11:07:53Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T11:07:53Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T11:07:53Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T11:07:53Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T11:07:53Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T11:07:53Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T11:07:53Z","vendor":"MoreFun"} [2026-06-17 11:08:43.476] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T11:07:53Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T11:07:53Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T11:07:53Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T11:07:53Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T11:07:53Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T11:07:53Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T11:07:53Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T11:07:53Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:53Z", "vendor" => "MoreFun"} [2026-06-17 11:08:43.476] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 11:08:43.476] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:43.476] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 11:08:43.479] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms queue=0.1ms idle=1042.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-06-17 11:08:43.485] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms idle=285.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 11:08:43.486] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=6.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-06-17 11:08:43.488] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.5ms 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-06-17 11:08:43.494] [DEBUG] QUERY OK source="pos_terminal" db=6.4ms idle=2.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 11:08:43.530] [DEBUG] QUERY OK source="pos_merchant" db=34.8ms queue=0.8ms idle=7.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 11:08:43.532] [DEBUG] QUERY OK db=0.6ms queue=1.0ms idle=1159.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 ["372916040000000"] [2026-06-17 11:08:43.532] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 11:08:43.534] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms idle=38.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 11:08:43.535] [DEBUG] QUERY OK source="address" db=0.8ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 11:08:43.535] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 11:08:43.536] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 11:08:43.550] [DEBUG] QUERY OK db=12.0ms idle=4.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", "b4059963a98d1d676c346b3d24251adfd15ed56cd5a44d2305fe7f2989bf0c30", 4162, 940, ~U[2026-06-17 11:08:43Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 11:08:43.550] [INFO ] AutoPushService: Created push log 29763 for MF919 params.zip [2026-06-17 11:08:43.551] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 4162, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 11:08:43.551] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 11:08:43.552] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 11:08:43.553] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=16.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-06-17 11:08:43.568] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 11:08:43.592] [DEBUG] QUERY OK db=16.6ms idle=25.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", "26ac5ebab7140f64d3d3a62343b4e13a23d4ffb1c818fd9913c6e2f235690948", 3813, 17947, ~U[2026-06-17 11:08:43Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 11:08:43.592] [INFO ] AutoPushService: Created push log 29764 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 11:08:43.592] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3813, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 11:08:43.592] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 11:08:43.592] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 11:08:43.595] [DEBUG] QUERY OK source="config_file_versions" db=2.5ms idle=39.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-06-17 11:08:43.595] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 11:08:43.601] [DEBUG] QUERY OK source="tms_terminals" db=5.5ms idle=3.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 11:08:43.601] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 11:08:43.605] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 11:08:43.605] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 11:08:43.606] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 11:08:43.609] [DEBUG] QUERY OK source="config_file_versions" db=2.5ms queue=0.1ms 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-06-17 11:08:43.610] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 11:08:43.610] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 11:08:43.614] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:43.641] [DEBUG] QUERY OK source="tms_terminals" db=27.2ms idle=5.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 11:08:43], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 11:08:43.645] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:43.645] [INFO ] Event published: terminal_updated [2026-06-17 11:08:43.645] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 11:08:43.646] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=31.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-06-17 11:08:43], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 11:08:43.645] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 11:08:43.646] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 11:08:43.647] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=4.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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 11:08:43.649] [DEBUG] QUERY OK source="terminal_group_rules" db=1.8ms idle=0.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-06-17 11:08:43.649] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 11:08:43.703] [DEBUG] QUERY OK source="tms_terminals" db=14.5ms queue=41.8ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 11:08:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:43.704] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=53.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-06-17 11:08:43.705] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 11:08:43.705] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:43.706] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:43.768] [DEBUG] QUERY OK source="tms_terminals" db=18.4ms queue=43.5ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:43], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:43.792] [DEBUG] QUERY OK db=23.3ms queue=0.4ms idle=62.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T11:07:53Z", ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:43.793] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39382, oid: "organization_id", upload_time: "2026-06-17T11:07:53Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]} [2026-06-17 11:08:43.793] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T11:07:53Z", "value" => "online"} [2026-06-17 11:08:43.823] [DEBUG] QUERY OK db=29.8ms queue=0.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T11:07:53Z", "online", "status", 39382, ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:43.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308107, itemkey: "status", value: "online", timestamp: "2026-06-17T11:07:53Z", message: "Terminal status update", status_log_id: 39382, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]}} [2026-06-17 11:08:43.824] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 11:08:43.824] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T11:07:53Z", "value" => "42"} [2026-06-17 11:08:43.835] [DEBUG] QUERY OK db=11.1ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T11:07:53Z", "42", "battery", 39382, ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:43.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308108, itemkey: "battery", value: "42", timestamp: "2026-06-17T11:07:53Z", message: "Battery level", status_log_id: 39382, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]}} [2026-06-17 11:08:43.836] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T11:07:53Z", "value" => "online"} [2026-06-17 11:08:43.847] [DEBUG] QUERY OK db=11.4ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T11:07:53Z", "online", "network", 39382, ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:43.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308109, itemkey: "network", value: "online", timestamp: "2026-06-17T11:07:53Z", message: "Network connectivity", status_log_id: 39382, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]}} [2026-06-17 11:08:43.848] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 11:08:43.848] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T11:07:53Z", "value" => "0"} [2026-06-17 11:08:43.870] [DEBUG] QUERY OK db=21.6ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T11:07:53Z", "0", "cpu", 39382, ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:43.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308110, itemkey: "cpu", value: "0", timestamp: "2026-06-17T11:07:53Z", message: "CPU usage percentage", status_log_id: 39382, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]}} [2026-06-17 11:08:43.870] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T11:07:53Z", "value" => "1.0.0"} [2026-06-17 11:08:43.899] [DEBUG] QUERY OK db=27.9ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T11:07:53Z", "1.0.0", "parameter_config", 39382, ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:43.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308111, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T11:07:53Z", message: "Current parameters version", status_log_id: 39382, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]}} [2026-06-17 11:08:43.899] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T11:07:53Z", "value" => "1.0.1"} [2026-06-17 11:08:43.922] [DEBUG] QUERY OK db=22.1ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T11:07:53Z", "1.0.1", "emv_config", 39382, ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:43.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308112, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T11:07:53Z", message: "Current EMV config version", status_log_id: 39382, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]}} [2026-06-17 11:08:43.922] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T11:07:53Z", "value" => ""} [2026-06-17 11:08:43.979] [DEBUG] QUERY OK db=14.3ms queue=41.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T11:07:53Z", "keys_config", 39382, ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:43.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308113, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T11:07:53Z", message: "Current keys config version", status_log_id: 39382, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]}} [2026-06-17 11:08:43.979] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T11:07:53Z", "value" => ""} [2026-06-17 11:08:44.043] [DEBUG] QUERY OK db=22.5ms queue=40.8ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T11:07:53Z", "application", 39382, ~N[2026-06-17 11:08:43], ~N[2026-06-17 11:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308114, itemkey: "application", value: nil, timestamp: "2026-06-17T11:07:53Z", message: "Current application version", status_log_id: 39382, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:43], updated_at: ~N[2026-06-17 11:08:43]}} [2026-06-17 11:08:44.044] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T11:07:53Z"} [2026-06-17 11:08:44.044] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T11:07:53Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 177, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 11:08:44.368] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:44.368] [INFO ] Incoming JSON payload: {"oid":"717b797f-aeea-4eb1-bf60-f61d736d75b7","sn":"98251226730002","uploadTime":"2026-06-17T11:07:54Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"ram_free_mb","value":"768","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:07:54Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:07:54Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:44.369] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "717b797f-aeea-4eb1-bf60-f61d736d75b7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:54Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:54Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:54Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:54Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:54Z", "value" => "768"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:54Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:54Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:54Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:54Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:54Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:07:54Z", "vendor" => "morefun"} [2026-06-17 11:08:44.369] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:44.369] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:44.369] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:44.371] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=326.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:08:44.372] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=174.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.`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-06-17 11:08:44.373] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:44.374] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:44.450] [DEBUG] QUERY OK source="tms_terminals" db=34.7ms queue=40.9ms idle=2.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 11:08:44], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 11:08:44.451] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:44.451] [INFO ] Event published: terminal_updated [2026-06-17 11:08:44.451] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 11:08:44.451] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 11:08:44.451] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 11:08:44.452] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=76.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-06-17 11:08:44], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 11:08:44.453] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.3ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 11:08:44.454] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms 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-06-17 11:08:44.454] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 11:08:44.529] [DEBUG] QUERY OK source="tms_terminals" db=31.4ms queue=43.0ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 11:08:44], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:44.529] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:44.530] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=75.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:44.609] [DEBUG] QUERY OK source="tms_terminals" db=37.1ms queue=41.3ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:44], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:44.629] [DEBUG] QUERY OK db=18.8ms idle=79.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "717b797f-aeea-4eb1-bf60-f61d736d75b7", "2026-06-17T11:07:54Z", ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:44.629] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39383, oid: "717b797f-aeea-4eb1-bf60-f61d736d75b7", upload_time: "2026-06-17T11:07:54Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]} [2026-06-17 11:08:44.629] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:07:54Z", "value" => "morefun"} [2026-06-17 11:08:44.691] [DEBUG] QUERY OK db=21.0ms queue=40.7ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "morefun", "vendor", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308115, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.692] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:07:54Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:44.746] [DEBUG] QUERY OK db=11.2ms queue=40.9ms idle=64.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "kiosk_launcher", "model", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308116, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.746] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:07:54Z", "value" => "1.0"} [2026-06-17 11:08:44.775] [DEBUG] QUERY OK db=27.7ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "1.0", "app_version", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308117, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.775] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:07:54Z", "value" => "13"} [2026-06-17 11:08:44.799] [DEBUG] QUERY OK db=23.8ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "13", "android_version", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308118, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.800] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:07:54Z", "value" => "768"} [2026-06-17 11:08:44.828] [DEBUG] QUERY OK db=27.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "768", "ram_free_mb", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308119, itemkey: "ram_free_mb", value: "768", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.828] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:07:54Z", "value" => "WIFI"} [2026-06-17 11:08:44.843] [DEBUG] QUERY OK db=14.0ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "WIFI", "network_type", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308120, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.843] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:07:54Z", "value" => "true"} [2026-06-17 11:08:44.862] [DEBUG] QUERY OK db=18.5ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "true", "kiosk_active", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308121, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.863] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:07:54Z", "value" => ""} [2026-06-17 11:08:44.886] [DEBUG] QUERY OK db=22.9ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:07:54Z", "sim_operator", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308122, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.886] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"} [2026-06-17 11:08:44.910] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "UNKNOWN", "sim_number", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308123, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.910] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"} [2026-06-17 11:08:44.926] [DEBUG] QUERY OK db=15.3ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "UNKNOWN", "sim_iccid", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308124, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.926] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"} [2026-06-17 11:08:44.946] [DEBUG] QUERY OK db=19.0ms queue=0.1ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "UNKNOWN", "sim_imsi", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308125, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.947] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"} [2026-06-17 11:08:44.981] [DEBUG] QUERY OK db=33.2ms queue=0.3ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "UNKNOWN", "sim_iccid2", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:44.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308126, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:44.981] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:07:54Z", "value" => "UNKNOWN"} [2026-06-17 11:08:45.004] [DEBUG] QUERY OK db=22.4ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "UNKNOWN", "sim_imsi2", 39383, ~N[2026-06-17 11:08:44], ~N[2026-06-17 11:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:45.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308127, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:44], updated_at: ~N[2026-06-17 11:08:44]}} [2026-06-17 11:08:45.005] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:07:54Z", "value" => "8"} [2026-06-17 11:08:45.016] [DEBUG] QUERY OK db=11.0ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "8", "data_usage_mb", 39383, ~N[2026-06-17 11:08:45], ~N[2026-06-17 11:08:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:45.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308128, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:45], updated_at: ~N[2026-06-17 11:08:45]}} [2026-06-17 11:08:45.017] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:07:54Z", "value" => "0"} [2026-06-17 11:08:45.032] [DEBUG] QUERY OK db=14.9ms idle=1.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "0", "mobile_data_mb", 39383, ~N[2026-06-17 11:08:45], ~N[2026-06-17 11:08:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:45.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308129, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:45], updated_at: ~N[2026-06-17 11:08:45]}} [2026-06-17 11:08:45.034] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:07:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:45.067] [DEBUG] QUERY OK db=32.4ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:07:54Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39383, ~N[2026-06-17 11:08:45], ~N[2026-06-17 11:08:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:45.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308130, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:07:54Z", message: nil, status_log_id: 39383, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:45], updated_at: ~N[2026-06-17 11:08:45]}} [2026-06-17 11:08:45.439] [INFO ] Received status update for terminal 61250424798001 [2026-06-17 11:08:45.440] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250424798001","uploadTime":"2026-06-17T15:08:44Z","org.device":[{"itemkey":"battery","value":26,"timestamp":"2026-06-17T15:08:44Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-06-17T15:08:44Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-06-17T15:08:44Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-06-17T15:08:44Z","message":""}]} [2026-06-17 11:08:45.440] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-06-17T15:08:44Z", "value" => 26}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-06-17T15:08:44Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-06-17T15:08:44Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-06-17T15:08:44Z", "value" => "online"}], "sn" => "61250424798001", "uploadTime" => "2026-06-17T15:08:44Z"} [2026-06-17 11:08:45.440] [INFO ] Extracted versions for 61250424798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:45.446] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms queue=0.1ms idle=242.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` = ?) ["61250424798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:45.446] [INFO ] Terminal updated: 61250424798001 [2026-06-17 11:08:45.513] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms queue=41.9ms idle=76.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:08:45], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:45.514] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=67.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` = ?) ["61250424798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:45.538] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms queue=0.4ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:45], 2] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:45.554] [DEBUG] QUERY OK db=15.6ms queue=0.1ms idle=23.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [2, "org-id-placeholder", "2026-06-17T15:08:44Z", ~N[2026-06-17 11:08:45], ~N[2026-06-17 11:08:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:45.555] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39384, oid: "org-id-placeholder", upload_time: "2026-06-17T15:08:44Z", terminal_id: 2, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:45], updated_at: ~N[2026-06-17 11:08:45]} [2026-06-17 11:08:45.555] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-06-17T15:08:44Z", "value" => 26} [2026-06-17 11:08:45.582] [DEBUG] QUERY OK db=26.5ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "26", "battery", 39384, ~N[2026-06-17 11:08:45], ~N[2026-06-17 11:08:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:45.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308131, itemkey: "battery", value: "26", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39384, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:45], updated_at: ~N[2026-06-17 11:08:45]}} [2026-06-17 11:08:45.583] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-06-17T15:08:44Z", "value" => 50} [2026-06-17 11:08:45.606] [DEBUG] QUERY OK db=23.2ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-06-17T15:08:44Z", "50", "memory", 39384, ~N[2026-06-17 11:08:45], ~N[2026-06-17 11:08:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:45.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308132, itemkey: "memory", value: "50", timestamp: "2026-06-17T15:08:44Z", message: "Normal", status_log_id: 39384, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:45], updated_at: ~N[2026-06-17 11:08:45]}} [2026-06-17 11:08:45.607] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-06-17T15:08:44Z", "value" => 50} [2026-06-17 11:08:45.631] [DEBUG] QUERY OK db=21.6ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "50", "cpu", 39384, ~N[2026-06-17 11:08:45], ~N[2026-06-17 11:08:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:45.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308133, itemkey: "cpu", value: "50", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39384, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:45], updated_at: ~N[2026-06-17 11:08:45]}} [2026-06-17 11:08:45.631] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-06-17T15:08:44Z", "value" => "online"} [2026-06-17 11:08:45.642] [DEBUG] QUERY OK db=10.6ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T15:08:44Z", "online", "network", 39384, ~N[2026-06-17 11:08:45], ~N[2026-06-17 11:08:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:45.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308134, itemkey: "network", value: "online", timestamp: "2026-06-17T15:08:44Z", message: nil, status_log_id: 39384, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:45], updated_at: ~N[2026-06-17 11:08:45]}} [2026-06-17 11:08:45.643] [INFO ] Setting terminal 61250424798001 status to 'online' from network itemkey [2026-06-17 11:08:50.437] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:50.437] [INFO ] Incoming JSON payload: {"oid":"fb76f7a7-aff5-494d-87ef-08b08798d9dc","sn":"98251226730002","uploadTime":"2026-06-17T11:08:00Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:00Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08:00Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:50.438] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fb76f7a7-aff5-494d-87ef-08b08798d9dc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:00Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:00Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:00Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:00Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:00Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:00Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:00Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:00Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:00Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:00Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:00Z", "vendor" => "morefun"} [2026-06-17 11:08:50.438] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:50.438] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:50.438] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:50.443] [DEBUG] QUERY OK source="parameter_templates" db=4.2ms idle=999.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-06-17 11:08:50.445] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=228.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.`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-06-17 11:08:50.445] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:50.447] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:50.447] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:50.472] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:08:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:50.475] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:50.478] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.2ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:50.508] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms queue=3.1ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:50.525] [DEBUG] QUERY OK db=15.8ms queue=1.4ms idle=30.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "fb76f7a7-aff5-494d-87ef-08b08798d9dc", "2026-06-17T11:08:00Z", ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:50.526] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39385, oid: "fb76f7a7-aff5-494d-87ef-08b08798d9dc", upload_time: "2026-06-17T11:08:00Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]} [2026-06-17 11:08:50.526] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:00Z", "value" => "morefun"} [2026-06-17 11:08:50.545] [DEBUG] QUERY OK db=18.2ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "morefun", "vendor", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308135, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.547] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:00Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:50.593] [DEBUG] QUERY OK db=46.0ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "kiosk_launcher", "model", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308136, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.593] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:00Z", "value" => "1.0"} [2026-06-17 11:08:50.606] [DEBUG] QUERY OK db=12.7ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "1.0", "app_version", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308137, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.607] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:00Z", "value" => "13"} [2026-06-17 11:08:50.637] [DEBUG] QUERY OK db=30.0ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "13", "android_version", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308138, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.638] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:00Z", "value" => "762"} [2026-06-17 11:08:50.673] [DEBUG] QUERY OK db=35.4ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "762", "ram_free_mb", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308139, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.674] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:00Z", "value" => "WIFI"} [2026-06-17 11:08:50.688] [DEBUG] QUERY OK db=14.0ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "WIFI", "network_type", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308140, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.688] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:00Z", "value" => "true"} [2026-06-17 11:08:50.705] [DEBUG] QUERY OK db=16.3ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "true", "kiosk_active", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308141, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.708] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:00Z", "value" => ""} [2026-06-17 11:08:50.733] [DEBUG] QUERY OK db=24.0ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:00Z", "sim_operator", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308142, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.734] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"} [2026-06-17 11:08:50.763] [DEBUG] QUERY OK db=29.0ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "UNKNOWN", "sim_number", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308143, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.764] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"} [2026-06-17 11:08:50.782] [DEBUG] QUERY OK db=17.6ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "UNKNOWN", "sim_iccid", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.782] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308144, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.782] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"} [2026-06-17 11:08:50.793] [DEBUG] QUERY OK db=10.7ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "UNKNOWN", "sim_imsi", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308145, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.794] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"} [2026-06-17 11:08:50.805] [DEBUG] QUERY OK db=10.8ms queue=0.1ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "UNKNOWN", "sim_iccid2", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308146, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.805] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:00Z", "value" => "UNKNOWN"} [2026-06-17 11:08:50.837] [DEBUG] QUERY OK db=30.9ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "UNKNOWN", "sim_imsi2", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308147, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.837] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:00Z", "value" => "8"} [2026-06-17 11:08:50.868] [DEBUG] QUERY OK db=30.0ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "8", "data_usage_mb", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308148, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.869] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:00Z", "value" => "0"} [2026-06-17 11:08:50.887] [DEBUG] QUERY OK db=17.9ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "0", "mobile_data_mb", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308149, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:50.889] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:50.905] [DEBUG] QUERY OK db=14.9ms queue=0.1ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:00Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39385, ~N[2026-06-17 11:08:50], ~N[2026-06-17 11:08:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:50.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308150, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:00Z", message: nil, status_log_id: 39385, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:50], updated_at: ~N[2026-06-17 11:08:50]}} [2026-06-17 11:08:54.911] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T11:07:45Z"} [2026-06-17 11:08:54.911] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T11:07:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 174, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 11:08:56.540] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:56.540] [INFO ] Incoming JSON payload: {"oid":"67ea813a-a75c-4c24-b702-035af8f806eb","sn":"98251226730002","uploadTime":"2026-06-17T11:08:06Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"ram_free_mb","value":"751","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:06Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08:06Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:08:56.541] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "67ea813a-a75c-4c24-b702-035af8f806eb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:06Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:06Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:06Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:06Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:06Z", "value" => "751"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:06Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:06Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:06Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:06Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:06Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:06Z", "vendor" => "morefun"} [2026-06-17 11:08:56.541] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:08:56.542] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:56.542] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:08:56.545] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=2.4ms idle=310.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-06-17 11:08:56.546] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.2ms idle=108.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-06-17 11:08:56.546] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:08:56.549] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:56.549] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:56.566] [DEBUG] QUERY OK source="tms_terminals" db=16.3ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:08:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:56.566] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:56.567] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=19.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:56.585] [DEBUG] QUERY OK source="tms_terminals" db=17.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:56], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:56.613] [DEBUG] QUERY OK db=26.5ms idle=19.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "67ea813a-a75c-4c24-b702-035af8f806eb", "2026-06-17T11:08:06Z", ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:56.613] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39386, oid: "67ea813a-a75c-4c24-b702-035af8f806eb", upload_time: "2026-06-17T11:08:06Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]} [2026-06-17 11:08:56.613] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:06Z", "value" => "morefun"} [2026-06-17 11:08:56.637] [DEBUG] QUERY OK db=23.0ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "morefun", "vendor", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308151, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.637] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:06Z", "value" => "kiosk_launcher"} [2026-06-17 11:08:56.654] [DEBUG] QUERY OK db=16.9ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "kiosk_launcher", "model", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308152, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.655] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:06Z", "value" => "1.0"} [2026-06-17 11:08:56.666] [DEBUG] QUERY OK db=10.9ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "1.0", "app_version", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308153, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.666] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:06Z", "value" => "13"} [2026-06-17 11:08:56.684] [DEBUG] QUERY OK db=16.8ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "13", "android_version", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308154, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.684] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:06Z", "value" => "751"} [2026-06-17 11:08:56.718] [DEBUG] QUERY OK db=34.0ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "751", "ram_free_mb", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308155, itemkey: "ram_free_mb", value: "751", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.719] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:06Z", "value" => "WIFI"} [2026-06-17 11:08:56.751] [DEBUG] QUERY OK db=29.0ms queue=3.2ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "WIFI", "network_type", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308156, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.752] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:06Z", "value" => "true"} [2026-06-17 11:08:56.773] [DEBUG] QUERY OK db=20.4ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "true", "kiosk_active", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308157, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.774] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:06Z", "value" => ""} [2026-06-17 11:08:56.802] [DEBUG] QUERY OK db=27.9ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:06Z", "sim_operator", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308158, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.802] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"} [2026-06-17 11:08:56.827] [DEBUG] QUERY OK db=24.0ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "UNKNOWN", "sim_number", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308159, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.828] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"} [2026-06-17 11:08:56.851] [DEBUG] QUERY OK db=19.0ms queue=0.6ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "UNKNOWN", "sim_iccid", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308160, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.851] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"} [2026-06-17 11:08:56.870] [DEBUG] QUERY OK db=18.3ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "UNKNOWN", "sim_imsi", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308161, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.870] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"} [2026-06-17 11:08:56.902] [DEBUG] QUERY OK db=30.2ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "UNKNOWN", "sim_iccid2", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308162, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.902] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:06Z", "value" => "UNKNOWN"} [2026-06-17 11:08:56.925] [DEBUG] QUERY OK db=21.7ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "UNKNOWN", "sim_imsi2", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308163, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.925] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:06Z", "value" => "8"} [2026-06-17 11:08:56.945] [DEBUG] QUERY OK db=18.4ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "8", "data_usage_mb", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308164, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.946] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:06Z", "value" => "0"} [2026-06-17 11:08:56.962] [DEBUG] QUERY OK db=15.1ms queue=0.1ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "0", "mobile_data_mb", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308165, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:56.963] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:08:56.991] [DEBUG] QUERY OK db=23.4ms queue=0.2ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:06Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39386, ~N[2026-06-17 11:08:56], ~N[2026-06-17 11:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:56.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308166, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:06Z", message: nil, status_log_id: 39386, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:56], updated_at: ~N[2026-06-17 11:08:56]}} [2026-06-17 11:08:58.116] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:08:58.117] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T11:08:08Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T11:08:08Z","value":"42"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T11:08:08Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T11:08:08Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T11:08:08Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T11:08:08Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T11:08:08Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T11:08:08Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T11:08:08Z","vendor":"MoreFun"} [2026-06-17 11:08:58.117] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T11:08:08Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T11:08:08Z", "value" => "42"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T11:08:08Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T11:08:08Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T11:08:08Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T11:08:08Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T11:08:08Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T11:08:08Z", "value" => ""}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:08Z", "vendor" => "MoreFun"} [2026-06-17 11:08:58.117] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 11:08:58.117] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:08:58.117] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 11:08:58.118] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1128.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-06-17 11:08:58.120] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=881.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 11:08:58.121] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms 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-06-17 11:08:58.124] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=1.4ms idle=1.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-06-17 11:08:58.125] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 11:08:58.164] [DEBUG] QUERY OK source="pos_merchant" db=39.2ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 11:08:58.166] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1791.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 ["372916040000000"] [2026-06-17 11:08:58.166] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 11:08:58.169] [DEBUG] QUERY OK source="pos_terminal_data" db=2.5ms idle=41.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 11:08:58.170] [DEBUG] QUERY OK source="address" db=0.6ms queue=0.1ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 11:08:58.170] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 11:08:58.171] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 11:08:58.192] [DEBUG] QUERY OK db=19.9ms idle=3.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", "28eee0c10117db5d1bbff0c812d4a5e72b1431c4c6326839bc4acb9eda4b195e", 3204, 940, ~U[2026-06-17 11:08:58Z], "priv/ota/98251226730002/params.zip", 13, "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-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 11:08:58.193] [INFO ] AutoPushService: Created push log 29765 for MF919 params.zip [2026-06-17 11:08:58.193] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 3204, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 11:08:58.193] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 11:08:58.193] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 11:08:58.194] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms idle=23.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-06-17 11:08:58.199] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 11:08:58.226] [DEBUG] QUERY OK db=24.2ms queue=0.4ms idle=9.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", "014e0c1ea34d3e4a7addb263bdc976c48df60a41e0170c97f2c596b60cc3c82e", 3300, 17947, ~U[2026-06-17 11:08:58Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 11:08:58.228] [INFO ] AutoPushService: Created push log 29766 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 11:08:58.228] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3300, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 11:08:58.229] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 11:08:58.229] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 11:08:58.232] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=35.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-06-17 11:08:58.232] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 11:08:58.234] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 11:08:58.234] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 11:08:58.235] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 11:08:58.236] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 11:08:58.236] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 11:08:58.237] [DEBUG] QUERY OK source="config_file_versions" db=0.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-06-17 11:08:58.237] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 11:08:58.237] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 11:08:58.238] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:08:58.303] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms queue=41.0ms idle=0.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 11:08:58], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 11:08:58.303] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:08:58.304] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 11:08:58.304] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 11:08:58.304] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 11:08:58.304] [INFO ] Event published: terminal_updated [2026-06-17 11:08:58.307] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.6ms idle=64.8ms 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-06-17 11:08:58], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 11:08:58.308] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=3.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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 11:08:58.309] [DEBUG] QUERY OK source="terminal_group_rules" db=0.8ms 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-06-17 11:08:58.309] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 11:08:58.368] [DEBUG] QUERY OK source="tms_terminals" db=19.7ms queue=41.1ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 11:08:58], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:08:58.370] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=59.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-06-17 11:08:58.371] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 11:08:58.371] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:08:58.372] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:08:58.436] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms queue=40.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:08:58], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:08:58.456] [DEBUG] QUERY OK db=19.6ms queue=0.2ms idle=64.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T11:08:08Z", ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:08:58.456] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39387, oid: "organization_id", upload_time: "2026-06-17T11:08:08Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]} [2026-06-17 11:08:58.457] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T11:08:08Z", "value" => "online"} [2026-06-17 11:08:58.472] [DEBUG] QUERY OK db=14.7ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T11:08:08Z", "online", "status", 39387, ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:58.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308167, itemkey: "status", value: "online", timestamp: "2026-06-17T11:08:08Z", message: "Terminal status update", status_log_id: 39387, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]}} [2026-06-17 11:08:58.472] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 11:08:58.473] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T11:08:08Z", "value" => "42"} [2026-06-17 11:08:58.506] [DEBUG] QUERY OK db=29.0ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T11:08:08Z", "42", "battery", 39387, ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:58.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308168, itemkey: "battery", value: "42", timestamp: "2026-06-17T11:08:08Z", message: "Battery level", status_log_id: 39387, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]}} [2026-06-17 11:08:58.506] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T11:08:08Z", "value" => "online"} [2026-06-17 11:08:58.540] [DEBUG] QUERY OK db=33.4ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T11:08:08Z", "online", "network", 39387, ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:58.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308169, itemkey: "network", value: "online", timestamp: "2026-06-17T11:08:08Z", message: "Network connectivity", status_log_id: 39387, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]}} [2026-06-17 11:08:58.540] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 11:08:58.541] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T11:08:08Z", "value" => "0"} [2026-06-17 11:08:58.554] [DEBUG] QUERY OK db=11.5ms queue=1.7ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T11:08:08Z", "0", "cpu", 39387, ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:58.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308170, itemkey: "cpu", value: "0", timestamp: "2026-06-17T11:08:08Z", message: "CPU usage percentage", status_log_id: 39387, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]}} [2026-06-17 11:08:58.557] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T11:08:08Z", "value" => "1.0.0"} [2026-06-17 11:08:58.572] [DEBUG] QUERY OK db=14.7ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T11:08:08Z", "1.0.0", "parameter_config", 39387, ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:58.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308171, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T11:08:08Z", message: "Current parameters version", status_log_id: 39387, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]}} [2026-06-17 11:08:58.573] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T11:08:08Z", "value" => "1.0.1"} [2026-06-17 11:08:58.597] [DEBUG] QUERY OK db=23.2ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T11:08:08Z", "1.0.1", "emv_config", 39387, ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:58.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308172, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T11:08:08Z", message: "Current EMV config version", status_log_id: 39387, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]}} [2026-06-17 11:08:58.597] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T11:08:08Z", "value" => ""} [2026-06-17 11:08:58.658] [DEBUG] QUERY OK db=18.9ms queue=41.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T11:08:08Z", "keys_config", 39387, ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:58.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308173, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T11:08:08Z", message: "Current keys config version", status_log_id: 39387, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]}} [2026-06-17 11:08:58.659] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T11:08:08Z", "value" => ""} [2026-06-17 11:08:58.711] [DEBUG] QUERY OK db=10.9ms queue=41.5ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T11:08:08Z", "application", 39387, ~N[2026-06-17 11:08:58], ~N[2026-06-17 11:08:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:08:58.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308174, itemkey: "application", value: nil, timestamp: "2026-06-17T11:08:08Z", message: "Current application version", status_log_id: 39387, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:08:58], updated_at: ~N[2026-06-17 11:08:58]}} [2026-06-17 11:08:58.712] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T11:08:08Z"} [2026-06-17 11:08:58.712] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T11:08:08Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 183, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 11:09:02.626] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:02.626] [INFO ] Incoming JSON payload: {"oid":"b190dd12-5ea8-4c9c-add6-ca08836d1435","sn":"98251226730002","uploadTime":"2026-06-17T11:08:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08:12Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:02.628] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b190dd12-5ea8-4c9c-add6-ca08836d1435", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:12Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:12Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:12Z", "vendor" => "morefun"} [2026-06-17 11:09:02.628] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:02.628] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:02.629] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:02.641] [DEBUG] QUERY OK source="parameter_templates" db=12.2ms idle=1186.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-06-17 11:09:02.642] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=381.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-06-17 11:09:02.644] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:02.650] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:02.724] [DEBUG] QUERY OK source="tms_terminals" db=28.3ms queue=44.9ms idle=9.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 11:09:02], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 11:09:02.726] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:02.726] [INFO ] Event published: terminal_updated [2026-06-17 11:09:02.726] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 11:09:02.726] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 11:09:02.726] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 11:09:02.731] [DEBUG] QUERY OK source="terminal_group_memberships" db=4.5ms queue=0.2ms idle=75.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-06-17 11:09:02], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 11:09:02.734] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 11:09:02.739] [DEBUG] QUERY OK source="terminal_group_rules" db=4.9ms idle=3.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-06-17 11:09:02.739] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 11:09:02.807] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms queue=43.8ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 11:09:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:02.809] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:02.812] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=70.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:02.874] [DEBUG] QUERY OK source="tms_terminals" db=19.8ms queue=42.2ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:02.915] [DEBUG] QUERY OK db=40.5ms queue=0.3ms idle=62.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b190dd12-5ea8-4c9c-add6-ca08836d1435", "2026-06-17T11:08:12Z", ~N[2026-06-17 11:09:02], ~N[2026-06-17 11:09:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:02.915] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39388, oid: "b190dd12-5ea8-4c9c-add6-ca08836d1435", upload_time: "2026-06-17T11:08:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:02], updated_at: ~N[2026-06-17 11:09:02]} [2026-06-17 11:09:02.916] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:12Z", "value" => "morefun"} [2026-06-17 11:09:02.984] [DEBUG] QUERY OK db=21.5ms queue=46.5ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "morefun", "vendor", 39388, ~N[2026-06-17 11:09:02], ~N[2026-06-17 11:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:02.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308175, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:02], updated_at: ~N[2026-06-17 11:09:02]}} [2026-06-17 11:09:02.984] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:12Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:03.050] [DEBUG] QUERY OK db=19.3ms queue=45.5ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "kiosk_launcher", "model", 39388, ~N[2026-06-17 11:09:02], ~N[2026-06-17 11:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308176, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:02], updated_at: ~N[2026-06-17 11:09:02]}} [2026-06-17 11:09:03.050] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:12Z", "value" => "1.0"} [2026-06-17 11:09:03.082] [DEBUG] QUERY OK db=31.3ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "1.0", "app_version", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308177, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.087] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:12Z", "value" => "13"} [2026-06-17 11:09:03.113] [DEBUG] QUERY OK db=25.8ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "13", "android_version", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308178, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.114] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:12Z", "value" => "762"} [2026-06-17 11:09:03.137] [DEBUG] QUERY OK db=14.9ms queue=3.9ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "762", "ram_free_mb", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308179, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.138] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:12Z", "value" => "WIFI"} [2026-06-17 11:09:03.168] [DEBUG] QUERY OK db=27.8ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "WIFI", "network_type", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308180, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.169] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:12Z", "value" => "true"} [2026-06-17 11:09:03.203] [DEBUG] QUERY OK db=34.2ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "true", "kiosk_active", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308181, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.204] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:12Z", "value" => ""} [2026-06-17 11:09:03.227] [DEBUG] QUERY OK db=23.5ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:12Z", "sim_operator", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308182, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.228] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"} [2026-06-17 11:09:03.247] [DEBUG] QUERY OK db=12.8ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "UNKNOWN", "sim_number", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308183, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.248] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"} [2026-06-17 11:09:03.284] [DEBUG] QUERY OK db=33.8ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "UNKNOWN", "sim_iccid", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308184, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.284] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"} [2026-06-17 11:09:03.315] [DEBUG] QUERY OK db=30.2ms idle=11.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "UNKNOWN", "sim_imsi", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308185, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.315] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"} [2026-06-17 11:09:03.332] [DEBUG] QUERY OK db=16.2ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "UNKNOWN", "sim_iccid2", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308186, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.332] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:12Z", "value" => "UNKNOWN"} [2026-06-17 11:09:03.384] [DEBUG] QUERY OK db=51.4ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "UNKNOWN", "sim_imsi2", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308187, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.385] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:12Z", "value" => "8"} [2026-06-17 11:09:03.419] [DEBUG] QUERY OK db=33.8ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "8", "data_usage_mb", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308188, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.420] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:12Z", "value" => "0"} [2026-06-17 11:09:03.473] [DEBUG] QUERY OK db=52.9ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "0", "mobile_data_mb", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308189, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.474] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:03.496] [DEBUG] QUERY OK db=17.7ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39388, ~N[2026-06-17 11:09:03], ~N[2026-06-17 11:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:03.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308190, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:12Z", message: nil, status_log_id: 39388, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:03], updated_at: ~N[2026-06-17 11:09:03]}} [2026-06-17 11:09:03.931] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T11:07:54Z"} [2026-06-17 11:09:03.931] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T11:07:54Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 178, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 11:09:08.872] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:08.872] [INFO ] Incoming JSON payload: {"oid":"4ab87fd7-02f3-491b-a1ca-e772ab6f1585","sn":"98251226730002","uploadTime":"2026-06-17T11:08:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"ram_free_mb","value":"761","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:08.873] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4ab87fd7-02f3-491b-a1ca-e772ab6f1585", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:18Z", "value" => "761"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:18Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:18Z", "vendor" => "morefun"} [2026-06-17 11:09:08.873] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:08.873] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:08.873] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:08.875] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=1430.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-06-17 11:09:08.877] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=576.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-06-17 11:09:08.877] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:08.879] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:08.879] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:08.906] [DEBUG] QUERY OK source="tms_terminals" db=25.5ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:08.906] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:08.908] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=27.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:08.924] [DEBUG] QUERY OK source="tms_terminals" db=15.5ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:08], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:08.944] [DEBUG] QUERY OK db=18.8ms idle=16.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4ab87fd7-02f3-491b-a1ca-e772ab6f1585", "2026-06-17T11:08:18Z", ~N[2026-06-17 11:09:08], ~N[2026-06-17 11:09:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:08.944] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39389, oid: "4ab87fd7-02f3-491b-a1ca-e772ab6f1585", upload_time: "2026-06-17T11:08:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:08], updated_at: ~N[2026-06-17 11:09:08]} [2026-06-17 11:09:08.944] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:18Z", "value" => "morefun"} [2026-06-17 11:09:08.989] [DEBUG] QUERY OK db=44.1ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "morefun", "vendor", 39389, ~N[2026-06-17 11:09:08], ~N[2026-06-17 11:09:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:08.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308191, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:08], updated_at: ~N[2026-06-17 11:09:08]}} [2026-06-17 11:09:08.989] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:18Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:09.007] [DEBUG] QUERY OK db=16.6ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "kiosk_launcher", "model", 39389, ~N[2026-06-17 11:09:08], ~N[2026-06-17 11:09:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308192, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:08], updated_at: ~N[2026-06-17 11:09:08]}} [2026-06-17 11:09:09.007] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:18Z", "value" => "1.0"} [2026-06-17 11:09:09.021] [DEBUG] QUERY OK db=13.3ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "1.0", "app_version", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308193, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.021] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:18Z", "value" => "13"} [2026-06-17 11:09:09.042] [DEBUG] QUERY OK db=20.4ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "13", "android_version", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308194, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.043] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:18Z", "value" => "761"} [2026-06-17 11:09:09.067] [DEBUG] QUERY OK db=23.6ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "761", "ram_free_mb", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308195, itemkey: "ram_free_mb", value: "761", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.067] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:18Z", "value" => "WIFI"} [2026-06-17 11:09:09.095] [DEBUG] QUERY OK db=27.8ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "WIFI", "network_type", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308196, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.096] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:18Z", "value" => "true"} [2026-06-17 11:09:09.110] [DEBUG] QUERY OK db=13.4ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "true", "kiosk_active", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308197, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.111] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:18Z", "value" => ""} [2026-06-17 11:09:09.125] [DEBUG] QUERY OK db=14.2ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:18Z", "sim_operator", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308198, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.126] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"} [2026-06-17 11:09:09.152] [DEBUG] QUERY OK db=26.1ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "UNKNOWN", "sim_number", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308199, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.152] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"} [2026-06-17 11:09:09.177] [DEBUG] QUERY OK db=23.9ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "UNKNOWN", "sim_iccid", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308200, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.177] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"} [2026-06-17 11:09:09.199] [DEBUG] QUERY OK db=20.5ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "UNKNOWN", "sim_imsi", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308201, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.199] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"} [2026-06-17 11:09:09.210] [DEBUG] QUERY OK db=10.6ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "UNKNOWN", "sim_iccid2", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308202, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.211] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:18Z", "value" => "UNKNOWN"} [2026-06-17 11:09:09.225] [DEBUG] QUERY OK db=13.9ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "UNKNOWN", "sim_imsi2", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308203, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.225] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:18Z", "value" => "8"} [2026-06-17 11:09:09.255] [DEBUG] QUERY OK db=29.1ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "8", "data_usage_mb", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308204, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.256] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:18Z", "value" => "0"} [2026-06-17 11:09:09.280] [DEBUG] QUERY OK db=23.5ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:18Z", "0", "mobile_data_mb", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308205, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:09.281] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:09.302] [DEBUG] QUERY OK db=19.9ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39389, ~N[2026-06-17 11:09:09], ~N[2026-06-17 11:09:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:09.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308206, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:18Z", message: nil, status_log_id: 39389, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:09], updated_at: ~N[2026-06-17 11:09:09]}} [2026-06-17 11:09:15.428] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:15.428] [INFO ] Incoming JSON payload: {"oid":"020a039a-07c9-4f18-b18c-675a85f2479e","sn":"98251226730002","uploadTime":"2026-06-17T11:08:24Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:24Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08:24Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:15.431] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "020a039a-07c9-4f18-b18c-675a85f2479e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:24Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:24Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:24Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:24Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:24Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:24Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:24Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:24Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:24Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:24Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:24Z", "vendor" => "morefun"} [2026-06-17 11:09:15.431] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:15.431] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:15.432] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:15.434] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=328.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:09:15.435] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=106.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-06-17 11:09:15.435] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:15.435] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:15.436] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:15.468] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:15], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:15.468] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:15.469] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=32.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:15.480] [DEBUG] QUERY OK source="tms_terminals" db=11.0ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:15], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:15.495] [DEBUG] QUERY OK db=14.1ms idle=12.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "020a039a-07c9-4f18-b18c-675a85f2479e", "2026-06-17T11:08:24Z", ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:15.496] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39390, oid: "020a039a-07c9-4f18-b18c-675a85f2479e", upload_time: "2026-06-17T11:08:24Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]} [2026-06-17 11:09:15.496] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:24Z", "value" => "morefun"} [2026-06-17 11:09:15.526] [DEBUG] QUERY OK db=26.4ms queue=0.9ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "morefun", "vendor", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308207, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.527] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:24Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:15.551] [DEBUG] QUERY OK db=24.0ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "kiosk_launcher", "model", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308208, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.551] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:24Z", "value" => "1.0"} [2026-06-17 11:09:15.573] [DEBUG] QUERY OK db=21.6ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "1.0", "app_version", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308209, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.575] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:24Z", "value" => "13"} [2026-06-17 11:09:15.588] [DEBUG] QUERY OK db=12.9ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "13", "android_version", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308210, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.589] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:24Z", "value" => "762"} [2026-06-17 11:09:15.619] [DEBUG] QUERY OK db=30.2ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "762", "ram_free_mb", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308211, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.620] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:24Z", "value" => "WIFI"} [2026-06-17 11:09:15.653] [DEBUG] QUERY OK db=32.8ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "WIFI", "network_type", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308212, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.655] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:24Z", "value" => "true"} [2026-06-17 11:09:15.666] [DEBUG] QUERY OK db=11.0ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "true", "kiosk_active", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308213, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.666] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:24Z", "value" => ""} [2026-06-17 11:09:15.683] [DEBUG] QUERY OK db=15.9ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:24Z", "sim_operator", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308214, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.683] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"} [2026-06-17 11:09:15.717] [DEBUG] QUERY OK db=33.7ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "UNKNOWN", "sim_number", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308215, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.718] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"} [2026-06-17 11:09:15.743] [DEBUG] QUERY OK db=24.4ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "UNKNOWN", "sim_iccid", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308216, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.743] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"} [2026-06-17 11:09:15.754] [DEBUG] QUERY OK db=11.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "UNKNOWN", "sim_imsi", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308217, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.755] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"} [2026-06-17 11:09:15.771] [DEBUG] QUERY OK db=15.7ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "UNKNOWN", "sim_iccid2", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308218, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.772] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:24Z", "value" => "UNKNOWN"} [2026-06-17 11:09:15.804] [DEBUG] QUERY OK db=31.7ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "UNKNOWN", "sim_imsi2", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308219, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.807] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:24Z", "value" => "8"} [2026-06-17 11:09:15.838] [DEBUG] QUERY OK db=30.2ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "8", "data_usage_mb", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308220, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.838] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:24Z", "value" => "0"} [2026-06-17 11:09:15.853] [DEBUG] QUERY OK db=13.5ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "0", "mobile_data_mb", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308221, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:15.854] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:15.882] [DEBUG] QUERY OK db=27.2ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:24Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39390, ~N[2026-06-17 11:09:15], ~N[2026-06-17 11:09:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:15.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308222, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:24Z", message: nil, status_log_id: 39390, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:15], updated_at: ~N[2026-06-17 11:09:15]}} [2026-06-17 11:09:18.614] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T11:08:08Z"} [2026-06-17 11:09:18.614] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T11:08:08Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 184, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 11:09:21.157] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:21.157] [INFO ] Incoming JSON payload: {"oid":"dac5f883-4857-44ce-a77c-c2163f99d586","sn":"98251226730002","uploadTime":"2026-06-17T11:08:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08:31Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:21.158] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dac5f883-4857-44ce-a77c-c2163f99d586", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:31Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:31Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:31Z", "vendor" => "morefun"} [2026-06-17 11:09:21.158] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:21.158] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:21.158] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:21.161] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1713.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:09:21.163] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=809.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-06-17 11:09:21.163] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:21.165] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:21.166] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:21.186] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:21.186] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:21.188] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:21.233] [DEBUG] QUERY OK source="tms_terminals" db=44.1ms queue=0.1ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:21.244] [DEBUG] QUERY OK db=10.6ms idle=45.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "dac5f883-4857-44ce-a77c-c2163f99d586", "2026-06-17T11:08:31Z", ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:21.244] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39391, oid: "dac5f883-4857-44ce-a77c-c2163f99d586", upload_time: "2026-06-17T11:08:31Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]} [2026-06-17 11:09:21.244] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:31Z", "value" => "morefun"} [2026-06-17 11:09:21.256] [DEBUG] QUERY OK db=11.4ms idle=11.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "morefun", "vendor", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308223, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.257] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:31Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:21.326] [DEBUG] QUERY OK db=69.1ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "kiosk_launcher", "model", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308224, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.326] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:31Z", "value" => "1.0"} [2026-06-17 11:09:21.365] [DEBUG] QUERY OK db=37.5ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "1.0", "app_version", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308225, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.365] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:31Z", "value" => "13"} [2026-06-17 11:09:21.438] [DEBUG] QUERY OK db=72.1ms idle=9.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "13", "android_version", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308226, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.439] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:31Z", "value" => "762"} [2026-06-17 11:09:21.463] [DEBUG] QUERY OK db=23.0ms queue=1.2ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "762", "ram_free_mb", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308227, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.463] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:31Z", "value" => "WIFI"} [2026-06-17 11:09:21.475] [DEBUG] QUERY OK db=11.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "WIFI", "network_type", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308228, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.476] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:31Z", "value" => "true"} [2026-06-17 11:09:21.487] [DEBUG] QUERY OK db=10.9ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "true", "kiosk_active", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308229, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.488] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:31Z", "value" => ""} [2026-06-17 11:09:21.523] [DEBUG] QUERY OK db=35.2ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:31Z", "sim_operator", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308230, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.524] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"} [2026-06-17 11:09:21.557] [DEBUG] QUERY OK db=32.2ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "UNKNOWN", "sim_number", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308231, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.557] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"} [2026-06-17 11:09:21.572] [DEBUG] QUERY OK db=14.6ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "UNKNOWN", "sim_iccid", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308232, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.573] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"} [2026-06-17 11:09:21.590] [DEBUG] QUERY OK db=16.1ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "UNKNOWN", "sim_imsi", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308233, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.591] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"} [2026-06-17 11:09:21.624] [DEBUG] QUERY OK db=32.9ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "UNKNOWN", "sim_iccid2", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308234, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.624] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:31Z", "value" => "UNKNOWN"} [2026-06-17 11:09:21.651] [DEBUG] QUERY OK db=26.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "UNKNOWN", "sim_imsi2", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308235, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.651] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:31Z", "value" => "8"} [2026-06-17 11:09:21.663] [DEBUG] QUERY OK db=11.2ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "8", "data_usage_mb", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308236, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.663] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:31Z", "value" => "0"} [2026-06-17 11:09:21.684] [DEBUG] QUERY OK db=20.6ms idle=12.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "0", "mobile_data_mb", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308237, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:21.685] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:21.729] [DEBUG] QUERY OK db=42.3ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:31Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39391, ~N[2026-06-17 11:09:21], ~N[2026-06-17 11:09:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:21.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308238, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:31Z", message: nil, status_log_id: 39391, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:21], updated_at: ~N[2026-06-17 11:09:21]}} [2026-06-17 11:09:27.783] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:27.783] [INFO ] Incoming JSON payload: {"oid":"8a9bcc0d-864b-4206-9275-6b490ba661ad","sn":"98251226730002","uploadTime":"2026-06-17T11:08:37Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:37Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:27.784] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8a9bcc0d-864b-4206-9275-6b490ba661ad", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:37Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:37Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:37Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:37Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:37Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:37Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:37Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:37Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:37Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:37Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:37Z", "vendor" => "morefun"} [2026-06-17 11:09:27.784] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:27.784] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:27.784] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:27.785] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=638.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-06-17 11:09:27.786] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=405.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.`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-06-17 11:09:27.786] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:27.787] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:27.788] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:27.817] [DEBUG] QUERY OK source="tms_terminals" db=28.3ms queue=0.1ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:27.818] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:27.820] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=30.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:27.841] [DEBUG] QUERY OK source="tms_terminals" db=17.1ms queue=1.1ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:27], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:27.876] [DEBUG] QUERY OK db=31.8ms idle=21.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8a9bcc0d-864b-4206-9275-6b490ba661ad", "2026-06-17T11:08:37Z", ~N[2026-06-17 11:09:27], ~N[2026-06-17 11:09:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:27.877] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39392, oid: "8a9bcc0d-864b-4206-9275-6b490ba661ad", upload_time: "2026-06-17T11:08:37Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:27], updated_at: ~N[2026-06-17 11:09:27]} [2026-06-17 11:09:27.877] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:37Z", "value" => "morefun"} [2026-06-17 11:09:27.903] [DEBUG] QUERY OK db=24.9ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "morefun", "vendor", 39392, ~N[2026-06-17 11:09:27], ~N[2026-06-17 11:09:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:27.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308239, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:27], updated_at: ~N[2026-06-17 11:09:27]}} [2026-06-17 11:09:27.903] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:37Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:27.925] [DEBUG] QUERY OK db=21.6ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "kiosk_launcher", "model", 39392, ~N[2026-06-17 11:09:27], ~N[2026-06-17 11:09:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:27.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308240, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:27], updated_at: ~N[2026-06-17 11:09:27]}} [2026-06-17 11:09:27.925] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:37Z", "value" => "1.0"} [2026-06-17 11:09:27.945] [DEBUG] QUERY OK db=17.5ms queue=0.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "1.0", "app_version", 39392, ~N[2026-06-17 11:09:27], ~N[2026-06-17 11:09:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:27.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308241, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:27], updated_at: ~N[2026-06-17 11:09:27]}} [2026-06-17 11:09:27.945] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:37Z", "value" => "13"} [2026-06-17 11:09:27.994] [DEBUG] QUERY OK db=48.1ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "13", "android_version", 39392, ~N[2026-06-17 11:09:27], ~N[2026-06-17 11:09:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:27.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308242, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:27], updated_at: ~N[2026-06-17 11:09:27]}} [2026-06-17 11:09:27.994] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:37Z", "value" => "762"} [2026-06-17 11:09:28.016] [DEBUG] QUERY OK db=17.2ms queue=4.1ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "762", "ram_free_mb", 39392, ~N[2026-06-17 11:09:27], ~N[2026-06-17 11:09:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308243, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:27], updated_at: ~N[2026-06-17 11:09:27]}} [2026-06-17 11:09:28.017] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:37Z", "value" => "WIFI"} [2026-06-17 11:09:28.040] [DEBUG] QUERY OK db=21.5ms queue=1.2ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "WIFI", "network_type", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308244, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.041] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:37Z", "value" => "true"} [2026-06-17 11:09:28.074] [DEBUG] QUERY OK db=32.7ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "true", "kiosk_active", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308245, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.075] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:37Z", "value" => ""} [2026-06-17 11:09:28.092] [DEBUG] QUERY OK db=17.0ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:37Z", "sim_operator", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308246, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.093] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"} [2026-06-17 11:09:28.105] [DEBUG] QUERY OK db=12.4ms idle=18.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "UNKNOWN", "sim_number", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308247, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.107] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"} [2026-06-17 11:09:28.120] [DEBUG] QUERY OK db=12.6ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "UNKNOWN", "sim_iccid", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308248, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.122] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"} [2026-06-17 11:09:28.149] [DEBUG] QUERY OK db=26.6ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "UNKNOWN", "sim_imsi", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308249, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.150] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"} [2026-06-17 11:09:28.182] [DEBUG] QUERY OK db=30.9ms queue=1.2ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "UNKNOWN", "sim_iccid2", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308250, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.183] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:37Z", "value" => "UNKNOWN"} [2026-06-17 11:09:28.198] [DEBUG] QUERY OK db=15.1ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "UNKNOWN", "sim_imsi2", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308251, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.198] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:37Z", "value" => "8"} [2026-06-17 11:09:28.211] [DEBUG] QUERY OK db=12.4ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "8", "data_usage_mb", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308252, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.212] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:37Z", "value" => "0"} [2026-06-17 11:09:28.253] [DEBUG] QUERY OK db=41.2ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:37Z", "0", "mobile_data_mb", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308253, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:28.254] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:28.286] [DEBUG] QUERY OK db=30.6ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39392, ~N[2026-06-17 11:09:28], ~N[2026-06-17 11:09:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:28.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308254, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:37Z", message: nil, status_log_id: 39392, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:28], updated_at: ~N[2026-06-17 11:09:28]}} [2026-06-17 11:09:33.755] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:33.755] [INFO ] Incoming JSON payload: {"oid":"3cf520f5-88ad-4af0-bd27-024abf2aba01","sn":"98251226730002","uploadTime":"2026-06-17T11:08:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"ram_free_mb","value":"759","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:33.756] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3cf520f5-88ad-4af0-bd27-024abf2aba01", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:43Z", "value" => "759"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:43Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:43Z", "vendor" => "morefun"} [2026-06-17 11:09:33.756] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:33.756] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:33.757] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:33.757] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=351.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:09:33.758] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=305.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-06-17 11:09:33.758] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:33.759] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:33.759] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:33.783] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:33.783] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:33.784] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:33.806] [DEBUG] QUERY OK source="tms_terminals" db=21.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:33], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:33.830] [DEBUG] QUERY OK db=23.7ms idle=22.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3cf520f5-88ad-4af0-bd27-024abf2aba01", "2026-06-17T11:08:43Z", ~N[2026-06-17 11:09:33], ~N[2026-06-17 11:09:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:33.831] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39393, oid: "3cf520f5-88ad-4af0-bd27-024abf2aba01", upload_time: "2026-06-17T11:08:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:33], updated_at: ~N[2026-06-17 11:09:33]} [2026-06-17 11:09:33.831] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:43Z", "value" => "morefun"} [2026-06-17 11:09:33.868] [DEBUG] QUERY OK db=35.5ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "morefun", "vendor", 39393, ~N[2026-06-17 11:09:33], ~N[2026-06-17 11:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:33.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308255, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:33], updated_at: ~N[2026-06-17 11:09:33]}} [2026-06-17 11:09:33.868] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:43Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:33.888] [DEBUG] QUERY OK db=18.9ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "kiosk_launcher", "model", 39393, ~N[2026-06-17 11:09:33], ~N[2026-06-17 11:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:33.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308256, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:33], updated_at: ~N[2026-06-17 11:09:33]}} [2026-06-17 11:09:33.889] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:43Z", "value" => "1.0"} [2026-06-17 11:09:33.912] [DEBUG] QUERY OK db=22.2ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "1.0", "app_version", 39393, ~N[2026-06-17 11:09:33], ~N[2026-06-17 11:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:33.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308257, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:33], updated_at: ~N[2026-06-17 11:09:33]}} [2026-06-17 11:09:33.913] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:43Z", "value" => "13"} [2026-06-17 11:09:33.939] [DEBUG] QUERY OK db=25.9ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "13", "android_version", 39393, ~N[2026-06-17 11:09:33], ~N[2026-06-17 11:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:33.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308258, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:33], updated_at: ~N[2026-06-17 11:09:33]}} [2026-06-17 11:09:33.939] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:43Z", "value" => "759"} [2026-06-17 11:09:33.971] [DEBUG] QUERY OK db=31.3ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "759", "ram_free_mb", 39393, ~N[2026-06-17 11:09:33], ~N[2026-06-17 11:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:33.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308259, itemkey: "ram_free_mb", value: "759", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:33], updated_at: ~N[2026-06-17 11:09:33]}} [2026-06-17 11:09:33.971] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:43Z", "value" => "WIFI"} [2026-06-17 11:09:33.989] [DEBUG] QUERY OK db=17.3ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "WIFI", "network_type", 39393, ~N[2026-06-17 11:09:33], ~N[2026-06-17 11:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:33.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308260, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:33], updated_at: ~N[2026-06-17 11:09:33]}} [2026-06-17 11:09:33.990] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:43Z", "value" => "true"} [2026-06-17 11:09:34.003] [DEBUG] QUERY OK db=13.3ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "true", "kiosk_active", 39393, ~N[2026-06-17 11:09:33], ~N[2026-06-17 11:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308261, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:33], updated_at: ~N[2026-06-17 11:09:33]}} [2026-06-17 11:09:34.005] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:43Z", "value" => ""} [2026-06-17 11:09:34.025] [DEBUG] QUERY OK db=19.8ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:43Z", "sim_operator", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308262, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:34.025] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"} [2026-06-17 11:09:34.058] [DEBUG] QUERY OK db=31.3ms queue=0.5ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "UNKNOWN", "sim_number", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308263, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:34.058] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"} [2026-06-17 11:09:34.096] [DEBUG] QUERY OK db=37.4ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "UNKNOWN", "sim_iccid", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308264, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:34.097] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"} [2026-06-17 11:09:34.114] [DEBUG] QUERY OK db=16.9ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "UNKNOWN", "sim_imsi", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308265, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:34.115] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"} [2026-06-17 11:09:34.145] [DEBUG] QUERY OK db=29.3ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "UNKNOWN", "sim_iccid2", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308266, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:34.145] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:43Z", "value" => "UNKNOWN"} [2026-06-17 11:09:34.168] [DEBUG] QUERY OK db=22.7ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "UNKNOWN", "sim_imsi2", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308267, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:34.169] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:43Z", "value" => "8"} [2026-06-17 11:09:34.187] [DEBUG] QUERY OK db=18.0ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "8", "data_usage_mb", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308268, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:34.187] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:43Z", "value" => "0"} [2026-06-17 11:09:34.202] [DEBUG] QUERY OK db=13.9ms queue=0.6ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:43Z", "0", "mobile_data_mb", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308269, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:34.204] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:34.218] [DEBUG] QUERY OK db=13.7ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39393, ~N[2026-06-17 11:09:34], ~N[2026-06-17 11:09:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:34.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308270, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:43Z", message: nil, status_log_id: 39393, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:34], updated_at: ~N[2026-06-17 11:09:34]}} [2026-06-17 11:09:39.886] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:39.886] [INFO ] Incoming JSON payload: {"oid":"79bc9f17-2d06-4d51-8f48-1012474a9f6d","sn":"98251226730002","uploadTime":"2026-06-17T11:08:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"ram_free_mb","value":"759","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08:49Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:39.889] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "79bc9f17-2d06-4d51-8f48-1012474a9f6d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:49Z", "value" => "759"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:49Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:49Z", "vendor" => "morefun"} [2026-06-17 11:09:39.889] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:39.889] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:39.891] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:39.895] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=472.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-06-17 11:09:39.896] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=441.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-06-17 11:09:39.896] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:39.901] [DEBUG] QUERY OK source="tms_terminals" db=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:39.901] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:39.932] [DEBUG] QUERY OK source="tms_terminals" db=30.9ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:39.932] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:39.937] [DEBUG] QUERY OK source="tms_terminals" db=4.4ms idle=31.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:39.958] [DEBUG] QUERY OK source="tms_terminals" db=20.1ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:39], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:39.981] [DEBUG] QUERY OK db=22.8ms idle=21.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "79bc9f17-2d06-4d51-8f48-1012474a9f6d", "2026-06-17T11:08:49Z", ~N[2026-06-17 11:09:39], ~N[2026-06-17 11:09:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:39.983] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39394, oid: "79bc9f17-2d06-4d51-8f48-1012474a9f6d", upload_time: "2026-06-17T11:08:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:39], updated_at: ~N[2026-06-17 11:09:39]} [2026-06-17 11:09:39.983] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:49Z", "value" => "morefun"} [2026-06-17 11:09:40.011] [DEBUG] QUERY OK db=27.4ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "morefun", "vendor", 39394, ~N[2026-06-17 11:09:39], ~N[2026-06-17 11:09:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308271, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:39], updated_at: ~N[2026-06-17 11:09:39]}} [2026-06-17 11:09:40.012] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:49Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:40.027] [DEBUG] QUERY OK db=13.9ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "kiosk_launcher", "model", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308272, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.027] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:49Z", "value" => "1.0"} [2026-06-17 11:09:40.038] [DEBUG] QUERY OK db=10.6ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "1.0", "app_version", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308273, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.038] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:49Z", "value" => "13"} [2026-06-17 11:09:40.050] [DEBUG] QUERY OK db=10.9ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "13", "android_version", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308274, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.050] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:49Z", "value" => "759"} [2026-06-17 11:09:40.083] [DEBUG] QUERY OK db=31.0ms queue=1.4ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "759", "ram_free_mb", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308275, itemkey: "ram_free_mb", value: "759", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.084] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:49Z", "value" => "WIFI"} [2026-06-17 11:09:40.108] [DEBUG] QUERY OK db=24.1ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "WIFI", "network_type", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308276, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.109] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:49Z", "value" => "true"} [2026-06-17 11:09:40.125] [DEBUG] QUERY OK db=16.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "true", "kiosk_active", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308277, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.125] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:49Z", "value" => ""} [2026-06-17 11:09:40.141] [DEBUG] QUERY OK db=15.5ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:49Z", "sim_operator", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308278, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.142] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"} [2026-06-17 11:09:40.180] [DEBUG] QUERY OK db=37.0ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "UNKNOWN", "sim_number", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308279, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.181] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"} [2026-06-17 11:09:40.204] [DEBUG] QUERY OK db=23.4ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "UNKNOWN", "sim_iccid", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308280, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.205] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"} [2026-06-17 11:09:40.223] [DEBUG] QUERY OK db=17.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "UNKNOWN", "sim_imsi", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308281, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.223] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"} [2026-06-17 11:09:40.235] [DEBUG] QUERY OK db=11.1ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "UNKNOWN", "sim_iccid2", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308282, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.235] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:49Z", "value" => "UNKNOWN"} [2026-06-17 11:09:40.247] [DEBUG] QUERY OK db=11.5ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "UNKNOWN", "sim_imsi2", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308283, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.248] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:49Z", "value" => "8"} [2026-06-17 11:09:40.277] [DEBUG] QUERY OK db=28.7ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "8", "data_usage_mb", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308284, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.278] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:49Z", "value" => "0"} [2026-06-17 11:09:40.301] [DEBUG] QUERY OK db=22.7ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "0", "mobile_data_mb", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308285, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:40.304] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:40.325] [DEBUG] QUERY OK db=19.9ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:49Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39394, ~N[2026-06-17 11:09:40], ~N[2026-06-17 11:09:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:40.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308286, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:49Z", message: nil, status_log_id: 39394, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:40], updated_at: ~N[2026-06-17 11:09:40]}} [2026-06-17 11:09:45.845] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:45.845] [INFO ] Incoming JSON payload: {"oid":"f7c8f523-b33f-4a44-80d1-6a1533c97f5a","sn":"98251226730002","uploadTime":"2026-06-17T11:08:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"ram_free_mb","value":"759","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:08:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:08:55Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:45.845] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f7c8f523-b33f-4a44-80d1-6a1533c97f5a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:55Z", "value" => "759"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:55Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:08:55Z", "vendor" => "morefun"} [2026-06-17 11:09:45.846] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:45.846] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:45.846] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:45.847] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=698.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-06-17 11:09:45.847] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=401.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-06-17 11:09:45.847] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:45.849] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:45.849] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:45.907] [DEBUG] QUERY OK source="tms_terminals" db=15.8ms queue=41.6ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:45.907] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:45.908] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=58.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:45.922] [DEBUG] QUERY OK source="tms_terminals" db=13.4ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:45], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:45.940] [DEBUG] QUERY OK db=17.1ms idle=14.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f7c8f523-b33f-4a44-80d1-6a1533c97f5a", "2026-06-17T11:08:55Z", ~N[2026-06-17 11:09:45], ~N[2026-06-17 11:09:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:45.940] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39395, oid: "f7c8f523-b33f-4a44-80d1-6a1533c97f5a", upload_time: "2026-06-17T11:08:55Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:45], updated_at: ~N[2026-06-17 11:09:45]} [2026-06-17 11:09:45.940] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:08:55Z", "value" => "morefun"} [2026-06-17 11:09:45.965] [DEBUG] QUERY OK db=24.0ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "morefun", "vendor", 39395, ~N[2026-06-17 11:09:45], ~N[2026-06-17 11:09:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:45.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308287, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:45], updated_at: ~N[2026-06-17 11:09:45]}} [2026-06-17 11:09:45.966] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:08:55Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:45.997] [DEBUG] QUERY OK db=31.2ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "kiosk_launcher", "model", 39395, ~N[2026-06-17 11:09:45], ~N[2026-06-17 11:09:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:45.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308288, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:45], updated_at: ~N[2026-06-17 11:09:45]}} [2026-06-17 11:09:45.998] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:08:55Z", "value" => "1.0"} [2026-06-17 11:09:46.010] [DEBUG] QUERY OK db=10.6ms queue=0.1ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "1.0", "app_version", 39395, ~N[2026-06-17 11:09:45], ~N[2026-06-17 11:09:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308289, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:45], updated_at: ~N[2026-06-17 11:09:45]}} [2026-06-17 11:09:46.011] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:08:55Z", "value" => "13"} [2026-06-17 11:09:46.028] [DEBUG] QUERY OK db=16.1ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "13", "android_version", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308290, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.028] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:08:55Z", "value" => "759"} [2026-06-17 11:09:46.051] [DEBUG] QUERY OK db=22.8ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "759", "ram_free_mb", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308291, itemkey: "ram_free_mb", value: "759", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.052] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:08:55Z", "value" => "WIFI"} [2026-06-17 11:09:46.078] [DEBUG] QUERY OK db=25.7ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "WIFI", "network_type", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308292, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.078] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:08:55Z", "value" => "true"} [2026-06-17 11:09:46.102] [DEBUG] QUERY OK db=22.8ms queue=1.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "true", "kiosk_active", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308293, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.104] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:08:55Z", "value" => ""} [2026-06-17 11:09:46.121] [DEBUG] QUERY OK db=15.3ms queue=0.6ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:08:55Z", "sim_operator", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308294, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.121] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"} [2026-06-17 11:09:46.153] [DEBUG] QUERY OK db=31.5ms queue=0.3ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "UNKNOWN", "sim_number", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308295, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.154] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"} [2026-06-17 11:09:46.178] [DEBUG] QUERY OK db=24.0ms queue=0.1ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "UNKNOWN", "sim_iccid", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308296, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.179] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"} [2026-06-17 11:09:46.204] [DEBUG] QUERY OK db=24.3ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "UNKNOWN", "sim_imsi", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308297, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.205] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"} [2026-06-17 11:09:46.221] [DEBUG] QUERY OK db=14.9ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "UNKNOWN", "sim_iccid2", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308298, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.222] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:08:55Z", "value" => "UNKNOWN"} [2026-06-17 11:09:46.243] [DEBUG] QUERY OK db=21.3ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "UNKNOWN", "sim_imsi2", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308299, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.244] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:08:55Z", "value" => "8"} [2026-06-17 11:09:46.267] [DEBUG] QUERY OK db=22.7ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "8", "data_usage_mb", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308300, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.267] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:08:55Z", "value" => "0"} [2026-06-17 11:09:46.299] [DEBUG] QUERY OK db=30.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "0", "mobile_data_mb", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308301, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:46.301] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:08:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:46.313] [DEBUG] QUERY OK db=11.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:08:55Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39395, ~N[2026-06-17 11:09:46], ~N[2026-06-17 11:09:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:46.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308302, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:08:55Z", message: nil, status_log_id: 39395, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:46], updated_at: ~N[2026-06-17 11:09:46]}} [2026-06-17 11:09:52.184] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:52.184] [INFO ] Incoming JSON payload: {"oid":"e1e5f4c9-3c44-4327-a4a8-3dcdce31efd8","sn":"98251226730002","uploadTime":"2026-06-17T11:09:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"ram_free_mb","value":"760","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09:01Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:52.188] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e1e5f4c9-3c44-4327-a4a8-3dcdce31efd8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:01Z", "value" => "760"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:01Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:01Z", "vendor" => "morefun"} [2026-06-17 11:09:52.188] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:52.188] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:52.189] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:52.194] [DEBUG] QUERY OK source="parameter_templates" db=5.0ms idle=733.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-06-17 11:09:52.197] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=730.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-06-17 11:09:52.197] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:52.209] [DEBUG] QUERY OK source="tms_terminals" db=11.4ms queue=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:52.210] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:52.249] [DEBUG] QUERY OK source="tms_terminals" db=39.3ms idle=12.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:52.249] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:52.252] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=2.1ms idle=40.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:52.290] [DEBUG] QUERY OK source="tms_terminals" db=37.0ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:52.306] [DEBUG] QUERY OK db=15.8ms idle=38.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e1e5f4c9-3c44-4327-a4a8-3dcdce31efd8", "2026-06-17T11:09:01Z", ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:52.307] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39396, oid: "e1e5f4c9-3c44-4327-a4a8-3dcdce31efd8", upload_time: "2026-06-17T11:09:01Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]} [2026-06-17 11:09:52.308] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:01Z", "value" => "morefun"} [2026-06-17 11:09:52.343] [DEBUG] QUERY OK db=30.3ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "morefun", "vendor", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308303, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.343] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:01Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:52.377] [DEBUG] QUERY OK db=32.9ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "kiosk_launcher", "model", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308304, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.377] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:01Z", "value" => "1.0"} [2026-06-17 11:09:52.394] [DEBUG] QUERY OK db=13.5ms queue=2.7ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "1.0", "app_version", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308305, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.395] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:01Z", "value" => "13"} [2026-06-17 11:09:52.426] [DEBUG] QUERY OK db=30.3ms queue=0.1ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "13", "android_version", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308306, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.426] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:01Z", "value" => "760"} [2026-06-17 11:09:52.460] [DEBUG] QUERY OK db=33.1ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "760", "ram_free_mb", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308307, itemkey: "ram_free_mb", value: "760", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.460] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:01Z", "value" => "WIFI"} [2026-06-17 11:09:52.471] [DEBUG] QUERY OK db=10.8ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "WIFI", "network_type", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308308, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.472] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:01Z", "value" => "true"} [2026-06-17 11:09:52.487] [DEBUG] QUERY OK db=15.4ms idle=5.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "true", "kiosk_active", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308309, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.488] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:01Z", "value" => ""} [2026-06-17 11:09:52.532] [DEBUG] QUERY OK db=44.2ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:01Z", "sim_operator", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308310, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.533] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"} [2026-06-17 11:09:52.547] [DEBUG] QUERY OK db=14.2ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "UNKNOWN", "sim_number", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308311, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.548] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"} [2026-06-17 11:09:52.559] [DEBUG] QUERY OK db=10.7ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "UNKNOWN", "sim_iccid", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308312, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.559] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"} [2026-06-17 11:09:52.588] [DEBUG] QUERY OK db=27.9ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "UNKNOWN", "sim_imsi", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308313, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.589] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"} [2026-06-17 11:09:52.622] [DEBUG] QUERY OK db=31.7ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "UNKNOWN", "sim_iccid2", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308314, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.622] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:01Z", "value" => "UNKNOWN"} [2026-06-17 11:09:52.636] [DEBUG] QUERY OK db=13.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "UNKNOWN", "sim_imsi2", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308315, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.636] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:01Z", "value" => "8"} [2026-06-17 11:09:52.649] [DEBUG] QUERY OK db=11.9ms queue=0.1ms idle=15.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "8", "data_usage_mb", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308316, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.649] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:01Z", "value" => "0"} [2026-06-17 11:09:52.674] [DEBUG] QUERY OK db=24.9ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "0", "mobile_data_mb", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308317, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:52.675] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:52.699] [DEBUG] QUERY OK db=22.9ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:01Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39396, ~N[2026-06-17 11:09:52], ~N[2026-06-17 11:09:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:52.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308318, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:01Z", message: nil, status_log_id: 39396, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:52], updated_at: ~N[2026-06-17 11:09:52]}} [2026-06-17 11:09:57.886] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:09:57.886] [INFO ] Incoming JSON payload: {"oid":"e986ecb2-3846-417b-bc84-cfd4881c82f5","sn":"98251226730002","uploadTime":"2026-06-17T11:09:07Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"ram_free_mb","value":"770","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:07Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:09:57.888] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e986ecb2-3846-417b-bc84-cfd4881c82f5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:07Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:07Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:07Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:07Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:07Z", "value" => "770"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:07Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:07Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:07Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:07Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:07Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:07Z", "vendor" => "morefun"} [2026-06-17 11:09:57.888] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:09:57.888] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:09:57.888] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:09:57.889] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=433.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-06-17 11:09:57.891] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=403.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.`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-06-17 11:09:57.891] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:09:57.894] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:09:57.895] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:09:57.934] [DEBUG] QUERY OK source="tms_terminals" db=38.2ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:09:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:09:57.934] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:09:57.949] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=47.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:09:57.983] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms queue=0.1ms idle=15.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:09:57], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:09:58.003] [DEBUG] QUERY OK db=18.2ms idle=40.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e986ecb2-3846-417b-bc84-cfd4881c82f5", "2026-06-17T11:09:07Z", ~N[2026-06-17 11:09:57], ~N[2026-06-17 11:09:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:09:58.003] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39397, oid: "e986ecb2-3846-417b-bc84-cfd4881c82f5", upload_time: "2026-06-17T11:09:07Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:57], updated_at: ~N[2026-06-17 11:09:57]} [2026-06-17 11:09:58.003] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:07Z", "value" => "morefun"} [2026-06-17 11:09:58.038] [DEBUG] QUERY OK db=34.3ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "morefun", "vendor", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308319, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.038] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:07Z", "value" => "kiosk_launcher"} [2026-06-17 11:09:58.074] [DEBUG] QUERY OK db=35.7ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "kiosk_launcher", "model", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308320, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.074] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:07Z", "value" => "1.0"} [2026-06-17 11:09:58.105] [DEBUG] QUERY OK db=30.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "1.0", "app_version", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308321, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.107] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:07Z", "value" => "13"} [2026-06-17 11:09:58.145] [DEBUG] QUERY OK db=36.9ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "13", "android_version", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308322, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.145] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:07Z", "value" => "770"} [2026-06-17 11:09:58.160] [DEBUG] QUERY OK db=14.2ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "770", "ram_free_mb", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308323, itemkey: "ram_free_mb", value: "770", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.161] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:07Z", "value" => "WIFI"} [2026-06-17 11:09:58.196] [DEBUG] QUERY OK db=34.7ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "WIFI", "network_type", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308324, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.196] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:07Z", "value" => "true"} [2026-06-17 11:09:58.226] [DEBUG] QUERY OK db=28.4ms queue=0.1ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "true", "kiosk_active", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308325, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.226] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:07Z", "value" => ""} [2026-06-17 11:09:58.280] [DEBUG] QUERY OK db=53.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:07Z", "sim_operator", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308326, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.281] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"} [2026-06-17 11:09:58.308] [DEBUG] QUERY OK db=26.9ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "UNKNOWN", "sim_number", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308327, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.309] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"} [2026-06-17 11:09:58.324] [DEBUG] QUERY OK db=14.3ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "UNKNOWN", "sim_iccid", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308328, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.324] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"} [2026-06-17 11:09:58.357] [DEBUG] QUERY OK db=33.0ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "UNKNOWN", "sim_imsi", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308329, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.358] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"} [2026-06-17 11:09:58.381] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "UNKNOWN", "sim_iccid2", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308330, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.382] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:07Z", "value" => "UNKNOWN"} [2026-06-17 11:09:58.447] [DEBUG] QUERY OK db=62.2ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "UNKNOWN", "sim_imsi2", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308331, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.449] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:07Z", "value" => "8"} [2026-06-17 11:09:58.475] [DEBUG] QUERY OK db=26.2ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "8", "data_usage_mb", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308332, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.475] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:07Z", "value" => "0"} [2026-06-17 11:09:58.531] [DEBUG] QUERY OK db=54.6ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:07Z", "0", "mobile_data_mb", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308333, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:09:58.532] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:09:58.553] [DEBUG] QUERY OK db=20.0ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39397, ~N[2026-06-17 11:09:58], ~N[2026-06-17 11:09:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:09:58.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308334, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:07Z", message: nil, status_log_id: 39397, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:09:58], updated_at: ~N[2026-06-17 11:09:58]}} [2026-06-17 11:10:03.966] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:03.966] [INFO ] Incoming JSON payload: {"oid":"9313cfda-b184-4df4-909b-bf663fd62589","sn":"98251226730002","uploadTime":"2026-06-17T11:09:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"ram_free_mb","value":"769","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:03.968] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9313cfda-b184-4df4-909b-bf663fd62589", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:13Z", "value" => "769"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:13Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:13Z", "vendor" => "morefun"} [2026-06-17 11:10:03.973] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:03.978] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:03.979] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:03.983] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms idle=520.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-06-17 11:10:03.990] [DEBUG] QUERY OK source="parameter_templates" db=6.5ms idle=476.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-06-17 11:10:03.991] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:03.996] [DEBUG] QUERY OK source="tms_terminals" db=4.0ms queue=0.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:03.996] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:04.034] [DEBUG] QUERY OK source="tms_terminals" db=37.3ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:04.034] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:04.037] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:04.067] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:04.095] [DEBUG] QUERY OK db=27.7ms idle=29.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "9313cfda-b184-4df4-909b-bf663fd62589", "2026-06-17T11:09:13Z", ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:04.098] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39398, oid: "9313cfda-b184-4df4-909b-bf663fd62589", upload_time: "2026-06-17T11:09:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]} [2026-06-17 11:10:04.098] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:13Z", "value" => "morefun"} [2026-06-17 11:10:04.113] [DEBUG] QUERY OK db=12.4ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "morefun", "vendor", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308335, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.113] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:13Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:04.147] [DEBUG] QUERY OK db=28.9ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "kiosk_launcher", "model", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308336, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.148] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:13Z", "value" => "1.0"} [2026-06-17 11:10:04.186] [DEBUG] QUERY OK db=38.0ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "1.0", "app_version", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308337, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.187] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:13Z", "value" => "13"} [2026-06-17 11:10:04.200] [DEBUG] QUERY OK db=12.8ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "13", "android_version", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308338, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.203] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:13Z", "value" => "769"} [2026-06-17 11:10:04.219] [DEBUG] QUERY OK db=16.0ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "769", "ram_free_mb", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308339, itemkey: "ram_free_mb", value: "769", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.220] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:13Z", "value" => "WIFI"} [2026-06-17 11:10:04.258] [DEBUG] QUERY OK db=30.0ms queue=0.6ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "WIFI", "network_type", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308340, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.261] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:13Z", "value" => "true"} [2026-06-17 11:10:04.284] [DEBUG] QUERY OK db=21.7ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "true", "kiosk_active", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308341, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.284] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:13Z", "value" => ""} [2026-06-17 11:10:04.296] [DEBUG] QUERY OK db=11.9ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:13Z", "sim_operator", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308342, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.297] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"} [2026-06-17 11:10:04.319] [DEBUG] QUERY OK db=21.5ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "UNKNOWN", "sim_number", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308343, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.319] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"} [2026-06-17 11:10:04.347] [DEBUG] QUERY OK db=27.6ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "UNKNOWN", "sim_iccid", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308344, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.348] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"} [2026-06-17 11:10:04.387] [DEBUG] QUERY OK db=39.5ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "UNKNOWN", "sim_imsi", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308345, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.388] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"} [2026-06-17 11:10:04.404] [DEBUG] QUERY OK db=13.3ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "UNKNOWN", "sim_iccid2", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308346, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.404] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:13Z", "value" => "UNKNOWN"} [2026-06-17 11:10:04.428] [DEBUG] QUERY OK db=23.6ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "UNKNOWN", "sim_imsi2", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308347, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.429] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:13Z", "value" => "8"} [2026-06-17 11:10:04.456] [DEBUG] QUERY OK db=26.9ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "8", "data_usage_mb", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308348, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.457] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:13Z", "value" => "0"} [2026-06-17 11:10:04.481] [DEBUG] QUERY OK db=24.1ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "0", "mobile_data_mb", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308349, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:04.482] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:04.500] [DEBUG] QUERY OK db=17.0ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39398, ~N[2026-06-17 11:10:04], ~N[2026-06-17 11:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:04.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308350, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:13Z", message: nil, status_log_id: 39398, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:04], updated_at: ~N[2026-06-17 11:10:04]}} [2026-06-17 11:10:10.300] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:10.301] [INFO ] Incoming JSON payload: {"oid":"97243edb-170f-474a-8a70-d30334d49ce4","sn":"98251226730002","uploadTime":"2026-06-17T11:09:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"ram_free_mb","value":"770","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:10.301] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "97243edb-170f-474a-8a70-d30334d49ce4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:20Z", "value" => "770"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:20Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:20Z", "vendor" => "morefun"} [2026-06-17 11:10:10.302] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:10.302] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:10.302] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:10.303] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1770.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-06-17 11:10:10.304] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=767.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-06-17 11:10:10.304] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:10.305] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:10.305] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:10.316] [DEBUG] QUERY OK source="tms_terminals" db=11.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:10.317] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:10.318] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=12.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:10.377] [DEBUG] QUERY OK source="tms_terminals" db=58.0ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:10], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:10.396] [DEBUG] QUERY OK db=18.2ms queue=0.1ms idle=59.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "97243edb-170f-474a-8a70-d30334d49ce4", "2026-06-17T11:09:20Z", ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:10.396] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39399, oid: "97243edb-170f-474a-8a70-d30334d49ce4", upload_time: "2026-06-17T11:09:20Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]} [2026-06-17 11:10:10.396] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:20Z", "value" => "morefun"} [2026-06-17 11:10:10.411] [DEBUG] QUERY OK db=14.4ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "morefun", "vendor", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308351, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.411] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:20Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:10.429] [DEBUG] QUERY OK db=17.2ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "kiosk_launcher", "model", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308352, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.429] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:20Z", "value" => "1.0"} [2026-06-17 11:10:10.453] [DEBUG] QUERY OK db=23.2ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "1.0", "app_version", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308353, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.453] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:20Z", "value" => "13"} [2026-06-17 11:10:10.479] [DEBUG] QUERY OK db=25.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "13", "android_version", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308354, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.480] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:20Z", "value" => "770"} [2026-06-17 11:10:10.495] [DEBUG] QUERY OK db=14.5ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "770", "ram_free_mb", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308355, itemkey: "ram_free_mb", value: "770", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.497] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:20Z", "value" => "WIFI"} [2026-06-17 11:10:10.511] [DEBUG] QUERY OK db=14.0ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "WIFI", "network_type", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308356, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.511] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:20Z", "value" => "true"} [2026-06-17 11:10:10.548] [DEBUG] QUERY OK db=36.1ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "true", "kiosk_active", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308357, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.548] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:20Z", "value" => ""} [2026-06-17 11:10:10.583] [DEBUG] QUERY OK db=33.0ms queue=0.9ms idle=9.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:20Z", "sim_operator", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308358, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.584] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"} [2026-06-17 11:10:10.601] [DEBUG] QUERY OK db=14.8ms queue=1.5ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "UNKNOWN", "sim_number", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308359, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.601] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"} [2026-06-17 11:10:10.618] [DEBUG] QUERY OK db=16.7ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "UNKNOWN", "sim_iccid", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308360, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.619] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"} [2026-06-17 11:10:10.644] [DEBUG] QUERY OK db=24.4ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "UNKNOWN", "sim_imsi", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308361, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.644] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"} [2026-06-17 11:10:10.668] [DEBUG] QUERY OK db=22.7ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "UNKNOWN", "sim_iccid2", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308362, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.668] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:20Z", "value" => "UNKNOWN"} [2026-06-17 11:10:10.683] [DEBUG] QUERY OK db=14.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "UNKNOWN", "sim_imsi2", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308363, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.684] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:20Z", "value" => "8"} [2026-06-17 11:10:10.701] [DEBUG] QUERY OK db=16.9ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "8", "data_usage_mb", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308364, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.701] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:20Z", "value" => "0"} [2026-06-17 11:10:10.736] [DEBUG] QUERY OK db=33.9ms queue=0.1ms idle=3.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:20Z", "0", "mobile_data_mb", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308365, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:10.738] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:10.762] [DEBUG] QUERY OK db=23.2ms queue=0.1ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39399, ~N[2026-06-17 11:10:10], ~N[2026-06-17 11:10:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:10.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308366, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:20Z", message: nil, status_log_id: 39399, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:10], updated_at: ~N[2026-06-17 11:10:10]}} [2026-06-17 11:10:16.368] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:16.369] [INFO ] Incoming JSON payload: {"oid":"58861c31-54ac-4276-91a6-b432b267d764","sn":"98251226730002","uploadTime":"2026-06-17T11:09:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"ram_free_mb","value":"767","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:16.372] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "58861c31-54ac-4276-91a6-b432b267d764", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:26Z", "value" => "767"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:26Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:26Z", "vendor" => "morefun"} [2026-06-17 11:10:16.373] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:16.373] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:16.374] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:16.376] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.7ms idle=1181.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-06-17 11:10:16.377] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=820.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-06-17 11:10:16.378] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:16.380] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:16.381] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:16.425] [DEBUG] QUERY OK source="tms_terminals" db=43.7ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:16.425] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:16.430] [DEBUG] QUERY OK source="tms_terminals" db=4.7ms idle=44.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:16.447] [DEBUG] QUERY OK source="tms_terminals" db=15.9ms queue=0.2ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:16.462] [DEBUG] QUERY OK db=14.5ms idle=17.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "58861c31-54ac-4276-91a6-b432b267d764", "2026-06-17T11:09:26Z", ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:16.462] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39400, oid: "58861c31-54ac-4276-91a6-b432b267d764", upload_time: "2026-06-17T11:09:26Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]} [2026-06-17 11:10:16.462] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:26Z", "value" => "morefun"} [2026-06-17 11:10:16.492] [DEBUG] QUERY OK db=29.0ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "morefun", "vendor", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308367, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.492] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:26Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:16.516] [DEBUG] QUERY OK db=23.8ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "kiosk_launcher", "model", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308368, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.516] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:26Z", "value" => "1.0"} [2026-06-17 11:10:16.534] [DEBUG] QUERY OK db=17.4ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "1.0", "app_version", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308369, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.535] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:26Z", "value" => "13"} [2026-06-17 11:10:16.546] [DEBUG] QUERY OK db=10.6ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "13", "android_version", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308370, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.546] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:26Z", "value" => "767"} [2026-06-17 11:10:16.564] [DEBUG] QUERY OK db=15.9ms idle=13.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "767", "ram_free_mb", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308371, itemkey: "ram_free_mb", value: "767", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.564] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:26Z", "value" => "WIFI"} [2026-06-17 11:10:16.598] [DEBUG] QUERY OK db=32.9ms idle=5.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "WIFI", "network_type", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308372, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.598] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:26Z", "value" => "true"} [2026-06-17 11:10:16.618] [DEBUG] QUERY OK db=20.0ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "true", "kiosk_active", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308373, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.619] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:26Z", "value" => ""} [2026-06-17 11:10:16.634] [DEBUG] QUERY OK db=15.0ms queue=0.2ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:26Z", "sim_operator", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308374, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.635] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"} [2026-06-17 11:10:16.646] [DEBUG] QUERY OK db=11.1ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "UNKNOWN", "sim_number", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308375, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.646] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"} [2026-06-17 11:10:16.683] [DEBUG] QUERY OK db=36.5ms idle=12.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "UNKNOWN", "sim_iccid", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308376, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.684] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"} [2026-06-17 11:10:16.715] [DEBUG] QUERY OK db=30.6ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "UNKNOWN", "sim_imsi", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308377, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.716] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"} [2026-06-17 11:10:16.731] [DEBUG] QUERY OK db=14.8ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "UNKNOWN", "sim_iccid2", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308378, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.731] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:26Z", "value" => "UNKNOWN"} [2026-06-17 11:10:16.747] [DEBUG] QUERY OK db=15.4ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "UNKNOWN", "sim_imsi2", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308379, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.747] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:26Z", "value" => "8"} [2026-06-17 11:10:16.784] [DEBUG] QUERY OK db=36.0ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "8", "data_usage_mb", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308380, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.785] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:26Z", "value" => "0"} [2026-06-17 11:10:16.815] [DEBUG] QUERY OK db=29.4ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:26Z", "0", "mobile_data_mb", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308381, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:16.816] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:16.833] [DEBUG] QUERY OK db=15.5ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39400, ~N[2026-06-17 11:10:16], ~N[2026-06-17 11:10:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:16.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308382, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:26Z", message: nil, status_log_id: 39400, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:16], updated_at: ~N[2026-06-17 11:10:16]}} [2026-06-17 11:10:17.445] [INFO ] Running offline device check... [2026-06-17 11:10:17.445] [INFO ] Starting offline device check... [2026-06-17 11:10:17.448] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=629.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:679 [2026-06-17 11:10:17.459] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.6ms idle=619.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:694 [2026-06-17 11:10:17.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.4ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.487] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.496] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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:694 [2026-06-17 11:10:17.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.7ms queue=0.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.508] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.516] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.523] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms idle=8.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:694 [2026-06-17 11:10:17.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms queue=0.1ms idle=7.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:694 [2026-06-17 11:10:17.532] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.548] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.0ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.578] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms idle=13.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:17], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 11:10:17.578] [INFO ] Terminal 98250623730001 back online [2026-06-17 11:10:17.582] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=15.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:694 [2026-06-17 11:10:17.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.587] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.607] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=17.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:694 [2026-06-17 11:10:17.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.619] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.624] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=1.1ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.636] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms queue=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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=7.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:694 [2026-06-17 11:10:17.638] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.639] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.640] [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:694 [2026-06-17 11:10:17.642] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.642] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.643] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 11:10:17.643] [INFO ] Offline device check completed. Found 35 offline devices, updated 1 statuses. [2026-06-17 11:10:17.643] [INFO ] Offline device check completed successfully [2026-06-17 11:10:22.481] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:22.481] [INFO ] Incoming JSON payload: {"oid":"d6212e6b-7f96-422b-9bd5-2779a10b3b19","sn":"98251226730002","uploadTime":"2026-06-17T11:09:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"ram_free_mb","value":"766","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09:32Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:22.482] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d6212e6b-7f96-422b-9bd5-2779a10b3b19", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:32Z", "value" => "766"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:32Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:32Z", "vendor" => "morefun"} [2026-06-17 11:10:22.482] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:22.482] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:22.482] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:22.484] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=1021.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-06-17 11:10:22.485] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=904.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-06-17 11:10:22.486] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:22.488] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:22.488] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:22.499] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:22.499] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:22.500] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=11.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:22.534] [DEBUG] QUERY OK source="tms_terminals" db=33.3ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:22.558] [DEBUG] QUERY OK db=23.0ms idle=34.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d6212e6b-7f96-422b-9bd5-2779a10b3b19", "2026-06-17T11:09:32Z", ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:22.562] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39401, oid: "d6212e6b-7f96-422b-9bd5-2779a10b3b19", upload_time: "2026-06-17T11:09:32Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]} [2026-06-17 11:10:22.562] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:32Z", "value" => "morefun"} [2026-06-17 11:10:22.579] [DEBUG] QUERY OK db=14.7ms queue=0.1ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "morefun", "vendor", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308383, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.579] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:32Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:22.592] [DEBUG] QUERY OK db=12.5ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "kiosk_launcher", "model", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308384, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.592] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:32Z", "value" => "1.0"} [2026-06-17 11:10:22.619] [DEBUG] QUERY OK db=25.2ms queue=0.3ms idle=10.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "1.0", "app_version", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308385, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.619] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:32Z", "value" => "13"} [2026-06-17 11:10:22.653] [DEBUG] QUERY OK db=33.2ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "13", "android_version", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308386, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.653] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:32Z", "value" => "766"} [2026-06-17 11:10:22.668] [DEBUG] QUERY OK db=14.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "766", "ram_free_mb", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308387, itemkey: "ram_free_mb", value: "766", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.668] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:32Z", "value" => "WIFI"} [2026-06-17 11:10:22.686] [DEBUG] QUERY OK db=17.2ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "WIFI", "network_type", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308388, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.686] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:32Z", "value" => "true"} [2026-06-17 11:10:22.704] [DEBUG] QUERY OK db=16.8ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "true", "kiosk_active", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308389, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.704] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:32Z", "value" => ""} [2026-06-17 11:10:22.728] [DEBUG] QUERY OK db=23.6ms queue=0.1ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:32Z", "sim_operator", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308390, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.730] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"} [2026-06-17 11:10:22.760] [DEBUG] QUERY OK db=30.2ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "UNKNOWN", "sim_number", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308391, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.761] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"} [2026-06-17 11:10:22.774] [DEBUG] QUERY OK db=11.3ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "UNKNOWN", "sim_iccid", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308392, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.774] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"} [2026-06-17 11:10:22.791] [DEBUG] QUERY OK db=16.4ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "UNKNOWN", "sim_imsi", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308393, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.792] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"} [2026-06-17 11:10:22.825] [DEBUG] QUERY OK db=32.7ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "UNKNOWN", "sim_iccid2", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308394, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.826] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:32Z", "value" => "UNKNOWN"} [2026-06-17 11:10:22.851] [DEBUG] QUERY OK db=25.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "UNKNOWN", "sim_imsi2", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308395, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.852] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:32Z", "value" => "8"} [2026-06-17 11:10:22.870] [DEBUG] QUERY OK db=17.3ms queue=0.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "8", "data_usage_mb", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308396, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.870] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:32Z", "value" => "0"} [2026-06-17 11:10:22.881] [DEBUG] QUERY OK db=11.0ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "0", "mobile_data_mb", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308397, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:22.883] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:22.902] [DEBUG] QUERY OK db=17.6ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:32Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39401, ~N[2026-06-17 11:10:22], ~N[2026-06-17 11:10:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:22.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308398, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:32Z", message: nil, status_log_id: 39401, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:22], updated_at: ~N[2026-06-17 11:10:22]}} [2026-06-17 11:10:28.552] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:28.552] [INFO ] Incoming JSON payload: {"oid":"adc71464-5b2a-4c8d-b3cd-c06da10d35c0","sn":"98251226730002","uploadTime":"2026-06-17T11:09:38Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"ram_free_mb","value":"765","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:38Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09:38Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:28.554] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "adc71464-5b2a-4c8d-b3cd-c06da10d35c0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:38Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:38Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:38Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:38Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:38Z", "value" => "765"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:38Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:38Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:38Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:38Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:38Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:38Z", "vendor" => "morefun"} [2026-06-17 11:10:28.554] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:28.554] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:28.554] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:28.556] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.6ms idle=950.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-06-17 11:10:28.558] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=95.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.`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-06-17 11:10:28.558] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:28.559] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:28.559] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:28.585] [DEBUG] QUERY OK source="tms_terminals" db=25.7ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:28.585] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:28.586] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:28.601] [DEBUG] QUERY OK source="tms_terminals" db=14.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:28], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:28.619] [DEBUG] QUERY OK db=17.1ms idle=14.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "adc71464-5b2a-4c8d-b3cd-c06da10d35c0", "2026-06-17T11:09:38Z", ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:28.619] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39402, oid: "adc71464-5b2a-4c8d-b3cd-c06da10d35c0", upload_time: "2026-06-17T11:09:38Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]} [2026-06-17 11:10:28.619] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:38Z", "value" => "morefun"} [2026-06-17 11:10:28.644] [DEBUG] QUERY OK db=24.7ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "morefun", "vendor", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308399, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.644] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:38Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:28.668] [DEBUG] QUERY OK db=23.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "kiosk_launcher", "model", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308400, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.668] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:38Z", "value" => "1.0"} [2026-06-17 11:10:28.690] [DEBUG] QUERY OK db=21.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "1.0", "app_version", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308401, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.691] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:38Z", "value" => "13"} [2026-06-17 11:10:28.702] [DEBUG] QUERY OK db=10.9ms queue=0.1ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "13", "android_version", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308402, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.704] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:38Z", "value" => "765"} [2026-06-17 11:10:28.720] [DEBUG] QUERY OK db=15.3ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "765", "ram_free_mb", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308403, itemkey: "ram_free_mb", value: "765", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.720] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:38Z", "value" => "WIFI"} [2026-06-17 11:10:28.753] [DEBUG] QUERY OK db=32.9ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "WIFI", "network_type", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308404, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.754] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:38Z", "value" => "true"} [2026-06-17 11:10:28.778] [DEBUG] QUERY OK db=23.8ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "true", "kiosk_active", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308405, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.778] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:38Z", "value" => ""} [2026-06-17 11:10:28.797] [DEBUG] QUERY OK db=16.9ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:38Z", "sim_operator", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308406, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.798] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"} [2026-06-17 11:10:28.810] [DEBUG] QUERY OK db=12.0ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "UNKNOWN", "sim_number", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308407, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.813] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"} [2026-06-17 11:10:28.842] [DEBUG] QUERY OK db=29.3ms queue=0.1ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "UNKNOWN", "sim_iccid", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308408, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.843] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"} [2026-06-17 11:10:28.867] [DEBUG] QUERY OK db=24.3ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "UNKNOWN", "sim_imsi", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308409, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.868] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"} [2026-06-17 11:10:28.889] [DEBUG] QUERY OK db=20.4ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "UNKNOWN", "sim_iccid2", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308410, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.890] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:38Z", "value" => "UNKNOWN"} [2026-06-17 11:10:28.907] [DEBUG] QUERY OK db=16.6ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "UNKNOWN", "sim_imsi2", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308411, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.908] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:38Z", "value" => "8"} [2026-06-17 11:10:28.937] [DEBUG] QUERY OK db=28.3ms queue=0.1ms idle=19.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "8", "data_usage_mb", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308412, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.937] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:38Z", "value" => "0"} [2026-06-17 11:10:28.960] [DEBUG] QUERY OK db=22.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "0", "mobile_data_mb", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308413, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:28.961] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:28.985] [DEBUG] QUERY OK db=23.2ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39402, ~N[2026-06-17 11:10:28], ~N[2026-06-17 11:10:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:28.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308414, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:38Z", message: nil, status_log_id: 39402, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:28], updated_at: ~N[2026-06-17 11:10:28]}} [2026-06-17 11:10:35.092] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:35.092] [INFO ] Incoming JSON payload: {"oid":"6d256bc3-e479-4d5f-9e02-a83c70eae0df","sn":"98251226730002","uploadTime":"2026-06-17T11:09:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"ram_free_mb","value":"767","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:35.093] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6d256bc3-e479-4d5f-9e02-a83c70eae0df", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:44Z", "value" => "767"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:44Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:44Z", "vendor" => "morefun"} [2026-06-17 11:10:35.093] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:35.093] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:35.093] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:35.094] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=631.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-06-17 11:10:35.094] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=464.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-06-17 11:10:35.095] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:35.097] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:35.097] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:35.124] [DEBUG] QUERY OK source="tms_terminals" db=25.7ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:35.124] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:35.125] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:35.148] [DEBUG] QUERY OK source="tms_terminals" db=22.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:35.168] [DEBUG] QUERY OK db=19.2ms idle=23.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6d256bc3-e479-4d5f-9e02-a83c70eae0df", "2026-06-17T11:09:44Z", ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:35.168] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39403, oid: "6d256bc3-e479-4d5f-9e02-a83c70eae0df", upload_time: "2026-06-17T11:09:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]} [2026-06-17 11:10:35.169] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:44Z", "value" => "morefun"} [2026-06-17 11:10:35.185] [DEBUG] QUERY OK db=15.1ms idle=21.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "morefun", "vendor", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308415, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.185] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:44Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:35.200] [DEBUG] QUERY OK db=13.1ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "kiosk_launcher", "model", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308416, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.201] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:44Z", "value" => "1.0"} [2026-06-17 11:10:35.221] [DEBUG] QUERY OK db=19.7ms queue=0.1ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "1.0", "app_version", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308417, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.222] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:44Z", "value" => "13"} [2026-06-17 11:10:35.255] [DEBUG] QUERY OK db=32.8ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "13", "android_version", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308418, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.255] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:44Z", "value" => "767"} [2026-06-17 11:10:35.278] [DEBUG] QUERY OK db=20.8ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "767", "ram_free_mb", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308419, itemkey: "ram_free_mb", value: "767", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.278] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:44Z", "value" => "WIFI"} [2026-06-17 11:10:35.290] [DEBUG] QUERY OK db=11.5ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "WIFI", "network_type", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308420, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.290] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:44Z", "value" => "true"} [2026-06-17 11:10:35.316] [DEBUG] QUERY OK db=24.4ms idle=13.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "true", "kiosk_active", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308421, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.316] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:44Z", "value" => ""} [2026-06-17 11:10:35.349] [DEBUG] QUERY OK db=32.0ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:44Z", "sim_operator", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308422, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.350] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"} [2026-06-17 11:10:35.373] [DEBUG] QUERY OK db=22.4ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "UNKNOWN", "sim_number", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308423, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.373] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"} [2026-06-17 11:10:35.403] [DEBUG] QUERY OK db=29.7ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "UNKNOWN", "sim_iccid", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308424, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.403] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"} [2026-06-17 11:10:35.489] [DEBUG] QUERY OK db=85.4ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "UNKNOWN", "sim_imsi", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308425, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.490] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"} [2026-06-17 11:10:35.518] [DEBUG] QUERY OK db=27.8ms idle=86.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "UNKNOWN", "sim_iccid2", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308426, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.518] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:44Z", "value" => "UNKNOWN"} [2026-06-17 11:10:35.534] [DEBUG] QUERY OK db=15.9ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "UNKNOWN", "sim_imsi2", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308427, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.535] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:44Z", "value" => "8"} [2026-06-17 11:10:35.546] [DEBUG] QUERY OK db=11.1ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "8", "data_usage_mb", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308428, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.547] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:44Z", "value" => "0"} [2026-06-17 11:10:35.567] [DEBUG] QUERY OK db=19.5ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:44Z", "0", "mobile_data_mb", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308429, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:35.568] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:35.604] [DEBUG] QUERY OK db=35.2ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39403, ~N[2026-06-17 11:10:35], ~N[2026-06-17 11:10:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:35.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308430, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:44Z", message: nil, status_log_id: 39403, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:35], updated_at: ~N[2026-06-17 11:10:35]}} [2026-06-17 11:10:40.892] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:40.892] [INFO ] Incoming JSON payload: {"oid":"5be5933d-a6ad-48bc-a0b9-063d501a6595","sn":"98251226730002","uploadTime":"2026-06-17T11:09:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"ram_free_mb","value":"767","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09:50Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:40.893] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5be5933d-a6ad-48bc-a0b9-063d501a6595", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:50Z", "value" => "767"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:50Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:50Z", "vendor" => "morefun"} [2026-06-17 11:10:40.893] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:40.893] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:40.893] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:40.894] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=432.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-06-17 11:10:40.895] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=245.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-06-17 11:10:40.895] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:40.896] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:40.896] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:40.909] [DEBUG] QUERY OK source="tms_terminals" db=12.1ms queue=0.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:40.909] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:40.910] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=13.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:40.925] [DEBUG] QUERY OK source="tms_terminals" db=14.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:40.949] [DEBUG] QUERY OK db=23.1ms idle=15.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5be5933d-a6ad-48bc-a0b9-063d501a6595", "2026-06-17T11:09:50Z", ~N[2026-06-17 11:10:40], ~N[2026-06-17 11:10:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:40.950] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39404, oid: "5be5933d-a6ad-48bc-a0b9-063d501a6595", upload_time: "2026-06-17T11:09:50Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:40], updated_at: ~N[2026-06-17 11:10:40]} [2026-06-17 11:10:40.950] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:50Z", "value" => "morefun"} [2026-06-17 11:10:40.980] [DEBUG] QUERY OK db=29.0ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "morefun", "vendor", 39404, ~N[2026-06-17 11:10:40], ~N[2026-06-17 11:10:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:40.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308431, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:40], updated_at: ~N[2026-06-17 11:10:40]}} [2026-06-17 11:10:40.981] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:50Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:41.001] [DEBUG] QUERY OK db=19.9ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "kiosk_launcher", "model", 39404, ~N[2026-06-17 11:10:40], ~N[2026-06-17 11:10:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308432, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:40], updated_at: ~N[2026-06-17 11:10:40]}} [2026-06-17 11:10:41.002] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:50Z", "value" => "1.0"} [2026-06-17 11:10:41.019] [DEBUG] QUERY OK db=16.6ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "1.0", "app_version", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308433, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.019] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:50Z", "value" => "13"} [2026-06-17 11:10:41.050] [DEBUG] QUERY OK db=30.9ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "13", "android_version", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308434, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.051] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:50Z", "value" => "767"} [2026-06-17 11:10:41.080] [DEBUG] QUERY OK db=28.6ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "767", "ram_free_mb", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308435, itemkey: "ram_free_mb", value: "767", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.081] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:50Z", "value" => "WIFI"} [2026-06-17 11:10:41.099] [DEBUG] QUERY OK db=16.9ms queue=1.0ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "WIFI", "network_type", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308436, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.099] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:50Z", "value" => "true"} [2026-06-17 11:10:41.115] [DEBUG] QUERY OK db=15.0ms queue=0.3ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "true", "kiosk_active", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308437, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.115] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:50Z", "value" => ""} [2026-06-17 11:10:41.157] [DEBUG] QUERY OK db=41.0ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:50Z", "sim_operator", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308438, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.157] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"} [2026-06-17 11:10:41.179] [DEBUG] QUERY OK db=21.1ms queue=0.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "UNKNOWN", "sim_number", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308439, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.179] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"} [2026-06-17 11:10:41.195] [DEBUG] QUERY OK db=15.1ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "UNKNOWN", "sim_iccid", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308440, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.195] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"} [2026-06-17 11:10:41.223] [DEBUG] QUERY OK db=27.7ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "UNKNOWN", "sim_imsi", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308441, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.224] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"} [2026-06-17 11:10:41.261] [DEBUG] QUERY OK db=36.0ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "UNKNOWN", "sim_iccid2", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308442, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.261] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:50Z", "value" => "UNKNOWN"} [2026-06-17 11:10:41.283] [DEBUG] QUERY OK db=20.8ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "UNKNOWN", "sim_imsi2", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308443, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.283] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:50Z", "value" => "8"} [2026-06-17 11:10:41.294] [DEBUG] QUERY OK db=11.1ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "8", "data_usage_mb", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308444, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.295] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:50Z", "value" => "0"} [2026-06-17 11:10:41.321] [DEBUG] QUERY OK db=24.4ms queue=0.2ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "0", "mobile_data_mb", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308445, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:41.322] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:41.363] [DEBUG] QUERY OK db=39.9ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:50Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39404, ~N[2026-06-17 11:10:41], ~N[2026-06-17 11:10:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:41.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308446, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:50Z", message: nil, status_log_id: 39404, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:41], updated_at: ~N[2026-06-17 11:10:41]}} [2026-06-17 11:10:46.813] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:46.814] [INFO ] Incoming JSON payload: {"oid":"90b44b6c-77e5-4c5b-82d5-d1f5fd8ce4e6","sn":"98251226730002","uploadTime":"2026-06-17T11:09:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"ram_free_mb","value":"767","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:09:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:09:56Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:46.814] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "90b44b6c-77e5-4c5b-82d5-d1f5fd8ce4e6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:56Z", "value" => "767"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:56Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:09:56Z", "vendor" => "morefun"} [2026-06-17 11:10:46.815] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:46.815] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:46.815] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:46.816] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=353.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-06-17 11:10:46.816] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=144.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.`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-06-17 11:10:46.817] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:46.817] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:46.818] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:46.830] [DEBUG] QUERY OK source="tms_terminals" db=11.9ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:46.831] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:46.832] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=14.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:46.846] [DEBUG] QUERY OK source="tms_terminals" db=13.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:46.878] [DEBUG] QUERY OK db=31.6ms idle=13.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "90b44b6c-77e5-4c5b-82d5-d1f5fd8ce4e6", "2026-06-17T11:09:56Z", ~N[2026-06-17 11:10:46], ~N[2026-06-17 11:10:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:46.878] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39405, oid: "90b44b6c-77e5-4c5b-82d5-d1f5fd8ce4e6", upload_time: "2026-06-17T11:09:56Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:46], updated_at: ~N[2026-06-17 11:10:46]} [2026-06-17 11:10:46.878] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:09:56Z", "value" => "morefun"} [2026-06-17 11:10:46.902] [DEBUG] QUERY OK db=23.2ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "morefun", "vendor", 39405, ~N[2026-06-17 11:10:46], ~N[2026-06-17 11:10:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:46.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308447, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:46], updated_at: ~N[2026-06-17 11:10:46]}} [2026-06-17 11:10:46.902] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:09:56Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:46.920] [DEBUG] QUERY OK db=16.7ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "kiosk_launcher", "model", 39405, ~N[2026-06-17 11:10:46], ~N[2026-06-17 11:10:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:46.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308448, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:46], updated_at: ~N[2026-06-17 11:10:46]}} [2026-06-17 11:10:46.920] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:09:56Z", "value" => "1.0"} [2026-06-17 11:10:46.932] [DEBUG] QUERY OK db=11.1ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "1.0", "app_version", 39405, ~N[2026-06-17 11:10:46], ~N[2026-06-17 11:10:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:46.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308449, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:46], updated_at: ~N[2026-06-17 11:10:46]}} [2026-06-17 11:10:46.932] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:09:56Z", "value" => "13"} [2026-06-17 11:10:46.944] [DEBUG] QUERY OK db=11.1ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "13", "android_version", 39405, ~N[2026-06-17 11:10:46], ~N[2026-06-17 11:10:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:46.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308450, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:46], updated_at: ~N[2026-06-17 11:10:46]}} [2026-06-17 11:10:46.944] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:09:56Z", "value" => "767"} [2026-06-17 11:10:46.971] [DEBUG] QUERY OK db=26.0ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "767", "ram_free_mb", 39405, ~N[2026-06-17 11:10:46], ~N[2026-06-17 11:10:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:46.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308451, itemkey: "ram_free_mb", value: "767", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:46], updated_at: ~N[2026-06-17 11:10:46]}} [2026-06-17 11:10:46.971] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:09:56Z", "value" => "WIFI"} [2026-06-17 11:10:46.993] [DEBUG] QUERY OK db=21.9ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "WIFI", "network_type", 39405, ~N[2026-06-17 11:10:46], ~N[2026-06-17 11:10:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:46.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308452, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:46], updated_at: ~N[2026-06-17 11:10:46]}} [2026-06-17 11:10:46.994] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:09:56Z", "value" => "true"} [2026-06-17 11:10:47.021] [DEBUG] QUERY OK db=24.7ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "true", "kiosk_active", 39405, ~N[2026-06-17 11:10:46], ~N[2026-06-17 11:10:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308453, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:46], updated_at: ~N[2026-06-17 11:10:46]}} [2026-06-17 11:10:47.021] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:09:56Z", "value" => ""} [2026-06-17 11:10:47.036] [DEBUG] QUERY OK db=14.6ms queue=0.1ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:09:56Z", "sim_operator", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308454, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:47.036] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"} [2026-06-17 11:10:47.054] [DEBUG] QUERY OK db=17.2ms idle=16.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "UNKNOWN", "sim_number", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308455, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:47.056] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"} [2026-06-17 11:10:47.087] [DEBUG] QUERY OK db=30.3ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "UNKNOWN", "sim_iccid", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308456, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:47.087] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"} [2026-06-17 11:10:47.108] [DEBUG] QUERY OK db=20.0ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "UNKNOWN", "sim_imsi", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308457, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:47.108] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"} [2026-06-17 11:10:47.126] [DEBUG] QUERY OK db=17.3ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "UNKNOWN", "sim_iccid2", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308458, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:47.126] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:09:56Z", "value" => "UNKNOWN"} [2026-06-17 11:10:47.146] [DEBUG] QUERY OK db=18.9ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "UNKNOWN", "sim_imsi2", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308459, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:47.147] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:09:56Z", "value" => "8"} [2026-06-17 11:10:47.181] [DEBUG] QUERY OK db=33.4ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "8", "data_usage_mb", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308460, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:47.181] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:09:56Z", "value" => "0"} [2026-06-17 11:10:47.201] [DEBUG] QUERY OK db=19.7ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "0", "mobile_data_mb", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308461, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:47.203] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:09:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:47.219] [DEBUG] QUERY OK db=14.8ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:09:56Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39405, ~N[2026-06-17 11:10:47], ~N[2026-06-17 11:10:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:47.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308462, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:09:56Z", message: nil, status_log_id: 39405, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:47], updated_at: ~N[2026-06-17 11:10:47]}} [2026-06-17 11:10:53.159] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:53.159] [INFO ] Incoming JSON payload: {"oid":"514fe985-bdf1-47c1-a302-01e2192e8496","sn":"98251226730002","uploadTime":"2026-06-17T11:10:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"ram_free_mb","value":"768","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:10:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:10:02Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:53.165] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "514fe985-bdf1-47c1-a302-01e2192e8496", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:02Z", "value" => "768"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:02Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:10:02Z", "vendor" => "morefun"} [2026-06-17 11:10:53.165] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:53.165] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:53.165] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:53.167] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=700.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-06-17 11:10:53.168] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=476.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-06-17 11:10:53.168] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:53.170] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:53.170] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:53.198] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:53.198] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:53.200] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:53.220] [DEBUG] QUERY OK source="tms_terminals" db=20.0ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:53.233] [DEBUG] QUERY OK db=12.5ms idle=20.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "514fe985-bdf1-47c1-a302-01e2192e8496", "2026-06-17T11:10:02Z", ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:53.234] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39406, oid: "514fe985-bdf1-47c1-a302-01e2192e8496", upload_time: "2026-06-17T11:10:02Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]} [2026-06-17 11:10:53.234] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:02Z", "value" => "morefun"} [2026-06-17 11:10:53.248] [DEBUG] QUERY OK db=13.2ms queue=0.1ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "morefun", "vendor", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308463, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.248] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:02Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:53.297] [DEBUG] QUERY OK db=48.4ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "kiosk_launcher", "model", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308464, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.298] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:02Z", "value" => "1.0"} [2026-06-17 11:10:53.318] [DEBUG] QUERY OK db=20.3ms queue=0.1ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "1.0", "app_version", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308465, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.320] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:02Z", "value" => "13"} [2026-06-17 11:10:53.337] [DEBUG] QUERY OK db=16.8ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "13", "android_version", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308466, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.337] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:02Z", "value" => "768"} [2026-06-17 11:10:53.361] [DEBUG] QUERY OK db=23.3ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "768", "ram_free_mb", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308467, itemkey: "ram_free_mb", value: "768", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.362] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:02Z", "value" => "WIFI"} [2026-06-17 11:10:53.399] [DEBUG] QUERY OK db=35.4ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "WIFI", "network_type", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308468, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.399] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:02Z", "value" => "true"} [2026-06-17 11:10:53.433] [DEBUG] QUERY OK db=33.9ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "true", "kiosk_active", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308469, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.434] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:02Z", "value" => ""} [2026-06-17 11:10:53.466] [DEBUG] QUERY OK db=32.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:10:02Z", "sim_operator", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308470, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.466] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"} [2026-06-17 11:10:53.499] [DEBUG] QUERY OK db=32.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "UNKNOWN", "sim_number", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308471, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.499] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"} [2026-06-17 11:10:53.515] [DEBUG] QUERY OK db=14.8ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "UNKNOWN", "sim_iccid", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308472, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.515] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"} [2026-06-17 11:10:53.534] [DEBUG] QUERY OK db=17.8ms queue=0.6ms idle=16.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "UNKNOWN", "sim_imsi", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308473, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.534] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"} [2026-06-17 11:10:53.560] [DEBUG] QUERY OK db=25.5ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "UNKNOWN", "sim_iccid2", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308474, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.561] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:02Z", "value" => "UNKNOWN"} [2026-06-17 11:10:53.595] [DEBUG] QUERY OK db=32.3ms queue=1.4ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "UNKNOWN", "sim_imsi2", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308475, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.595] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:02Z", "value" => "8"} [2026-06-17 11:10:53.615] [DEBUG] QUERY OK db=19.7ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "8", "data_usage_mb", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308476, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.616] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:02Z", "value" => "0"} [2026-06-17 11:10:53.638] [DEBUG] QUERY OK db=21.3ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "0", "mobile_data_mb", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308477, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:53.641] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:53.668] [DEBUG] QUERY OK db=26.3ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:02Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39406, ~N[2026-06-17 11:10:53], ~N[2026-06-17 11:10:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:53.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308478, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:10:02Z", message: nil, status_log_id: 39406, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:53], updated_at: ~N[2026-06-17 11:10:53]}} [2026-06-17 11:10:59.236] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:10:59.236] [INFO ] Incoming JSON payload: {"oid":"31d213aa-223f-4c59-a86d-59150b767368","sn":"98251226730002","uploadTime":"2026-06-17T11:10:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"ram_free_mb","value":"766","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:10:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:10:09Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:10:59.237] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "31d213aa-223f-4c59-a86d-59150b767368", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:09Z", "value" => "766"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:09Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:10:09Z", "vendor" => "morefun"} [2026-06-17 11:10:59.237] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:10:59.237] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:10:59.237] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:10:59.241] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=1528.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-06-17 11:10:59.245] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=533.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.`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-06-17 11:10:59.245] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:10:59.255] [DEBUG] QUERY OK source="tms_terminals" db=7.7ms queue=2.1ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:10:59.256] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:10:59.281] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=10.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:10:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:10:59.281] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:10:59.285] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:10:59.318] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:10:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:10:59.339] [DEBUG] QUERY OK db=21.3ms idle=32.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "31d213aa-223f-4c59-a86d-59150b767368", "2026-06-17T11:10:09Z", ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:10:59.340] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39407, oid: "31d213aa-223f-4c59-a86d-59150b767368", upload_time: "2026-06-17T11:10:09Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]} [2026-06-17 11:10:59.341] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:09Z", "value" => "morefun"} [2026-06-17 11:10:59.355] [DEBUG] QUERY OK db=13.9ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "morefun", "vendor", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308479, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.355] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:09Z", "value" => "kiosk_launcher"} [2026-06-17 11:10:59.393] [DEBUG] QUERY OK db=37.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "kiosk_launcher", "model", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308480, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.393] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:09Z", "value" => "1.0"} [2026-06-17 11:10:59.433] [DEBUG] QUERY OK db=39.8ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "1.0", "app_version", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308481, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.434] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:09Z", "value" => "13"} [2026-06-17 11:10:59.489] [DEBUG] QUERY OK db=54.9ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "13", "android_version", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308482, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.489] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:09Z", "value" => "766"} [2026-06-17 11:10:59.520] [DEBUG] QUERY OK db=28.8ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "766", "ram_free_mb", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308483, itemkey: "ram_free_mb", value: "766", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.521] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:09Z", "value" => "WIFI"} [2026-06-17 11:10:59.548] [DEBUG] QUERY OK db=23.4ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "WIFI", "network_type", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308484, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.548] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:09Z", "value" => "true"} [2026-06-17 11:10:59.568] [DEBUG] QUERY OK db=19.5ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "true", "kiosk_active", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308485, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.569] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:09Z", "value" => ""} [2026-06-17 11:10:59.600] [DEBUG] QUERY OK db=30.3ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:10:09Z", "sim_operator", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308486, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.600] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"} [2026-06-17 11:10:59.622] [DEBUG] QUERY OK db=21.9ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "UNKNOWN", "sim_number", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308487, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.623] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"} [2026-06-17 11:10:59.645] [DEBUG] QUERY OK db=18.0ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "UNKNOWN", "sim_iccid", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308488, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.646] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"} [2026-06-17 11:10:59.667] [DEBUG] QUERY OK db=20.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "UNKNOWN", "sim_imsi", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308489, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.667] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"} [2026-06-17 11:10:59.683] [DEBUG] QUERY OK db=15.4ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "UNKNOWN", "sim_iccid2", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308490, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.684] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:09Z", "value" => "UNKNOWN"} [2026-06-17 11:10:59.708] [DEBUG] QUERY OK db=23.8ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "UNKNOWN", "sim_imsi2", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308491, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.709] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:09Z", "value" => "8"} [2026-06-17 11:10:59.741] [DEBUG] QUERY OK db=32.0ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "8", "data_usage_mb", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308492, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.743] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:09Z", "value" => "0"} [2026-06-17 11:10:59.760] [DEBUG] QUERY OK db=17.0ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "0", "mobile_data_mb", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308493, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:10:59.764] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:10:59.788] [DEBUG] QUERY OK db=20.4ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39407, ~N[2026-06-17 11:10:59], ~N[2026-06-17 11:10:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:10:59.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308494, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:10:09Z", message: nil, status_log_id: 39407, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:10:59], updated_at: ~N[2026-06-17 11:10:59]}} [2026-06-17 11:11:05.325] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:11:05.326] [INFO ] Incoming JSON payload: {"oid":"e5c9c156-950e-4198-905c-805cf170bbc4","sn":"98251226730002","uploadTime":"2026-06-17T11:10:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"ram_free_mb","value":"765","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:10:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:10:15Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:11:05.330] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e5c9c156-950e-4198-905c-805cf170bbc4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:15Z", "value" => "765"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:15Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:10:15Z", "vendor" => "morefun"} [2026-06-17 11:11:05.330] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:11:05.330] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:11:05.330] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:11:05.331] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1573.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:11:05.335] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=568.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-06-17 11:11:05.336] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:11:05.337] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:11:05.338] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:11:05.365] [DEBUG] QUERY OK source="tms_terminals" db=27.5ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:11:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:11:05.366] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:11:05.368] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:11:05.387] [DEBUG] QUERY OK source="tms_terminals" db=18.7ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:11:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:11:05.414] [DEBUG] QUERY OK db=26.4ms idle=19.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e5c9c156-950e-4198-905c-805cf170bbc4", "2026-06-17T11:10:15Z", ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:11:05.416] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39408, oid: "e5c9c156-950e-4198-905c-805cf170bbc4", upload_time: "2026-06-17T11:10:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]} [2026-06-17 11:11:05.416] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:15Z", "value" => "morefun"} [2026-06-17 11:11:05.449] [DEBUG] QUERY OK db=31.2ms queue=2.0ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "morefun", "vendor", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308495, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.450] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:15Z", "value" => "kiosk_launcher"} [2026-06-17 11:11:05.460] [DEBUG] QUERY OK db=10.2ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "kiosk_launcher", "model", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308496, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.461] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:15Z", "value" => "1.0"} [2026-06-17 11:11:05.475] [DEBUG] QUERY OK db=13.1ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "1.0", "app_version", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308497, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.476] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:15Z", "value" => "13"} [2026-06-17 11:11:05.511] [DEBUG] QUERY OK db=32.4ms queue=2.0ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "13", "android_version", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308498, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.513] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:15Z", "value" => "765"} [2026-06-17 11:11:05.536] [DEBUG] QUERY OK db=22.9ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "765", "ram_free_mb", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308499, itemkey: "ram_free_mb", value: "765", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.536] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:15Z", "value" => "WIFI"} [2026-06-17 11:11:05.551] [DEBUG] QUERY OK db=14.5ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "WIFI", "network_type", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308500, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.551] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:15Z", "value" => "true"} [2026-06-17 11:11:05.565] [DEBUG] QUERY OK db=12.3ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "true", "kiosk_active", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308501, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.567] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:15Z", "value" => ""} [2026-06-17 11:11:05.580] [DEBUG] QUERY OK db=12.5ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:10:15Z", "sim_operator", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308502, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.580] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"} [2026-06-17 11:11:05.604] [DEBUG] QUERY OK db=23.6ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "UNKNOWN", "sim_number", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308503, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.605] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"} [2026-06-17 11:11:05.638] [DEBUG] QUERY OK db=32.7ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "UNKNOWN", "sim_iccid", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308504, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.638] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"} [2026-06-17 11:11:05.652] [DEBUG] QUERY OK db=13.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "UNKNOWN", "sim_imsi", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308505, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.652] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"} [2026-06-17 11:11:05.663] [DEBUG] QUERY OK db=11.0ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "UNKNOWN", "sim_iccid2", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308506, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.664] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:15Z", "value" => "UNKNOWN"} [2026-06-17 11:11:05.695] [DEBUG] QUERY OK db=30.5ms queue=0.1ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "UNKNOWN", "sim_imsi2", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308507, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.695] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:15Z", "value" => "8"} [2026-06-17 11:11:05.711] [DEBUG] QUERY OK db=16.0ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "8", "data_usage_mb", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308508, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.712] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:15Z", "value" => "0"} [2026-06-17 11:11:05.740] [DEBUG] QUERY OK db=25.2ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "0", "mobile_data_mb", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308509, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:05.743] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:11:05.769] [DEBUG] QUERY OK db=18.2ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39408, ~N[2026-06-17 11:11:05], ~N[2026-06-17 11:11:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:05.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308510, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:10:15Z", message: nil, status_log_id: 39408, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:05], updated_at: ~N[2026-06-17 11:11:05]}} [2026-06-17 11:11:11.418] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:11:11.418] [INFO ] Incoming JSON payload: {"oid":"30f5d17b-9b9a-48c8-91ad-1fc1c6b8fab0","sn":"98251226730002","uploadTime":"2026-06-17T11:10:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:10:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:10:21Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:11:11.421] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "30f5d17b-9b9a-48c8-91ad-1fc1c6b8fab0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:21Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:21Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:10:21Z", "vendor" => "morefun"} [2026-06-17 11:11:11.421] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:11:11.421] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:11:11.421] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:11:11.424] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms queue=0.2ms idle=954.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 11:11:11.424] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=637.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-06-17 11:11:11.425] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:11:11.425] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:11:11.426] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:11:11.441] [DEBUG] QUERY OK source="tms_terminals" db=15.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:11:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:11:11.442] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:11:11.444] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=17.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:11:11.459] [DEBUG] QUERY OK source="tms_terminals" db=14.5ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:11:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:11:11.479] [DEBUG] QUERY OK db=19.5ms idle=15.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "30f5d17b-9b9a-48c8-91ad-1fc1c6b8fab0", "2026-06-17T11:10:21Z", ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:11:11.479] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39409, oid: "30f5d17b-9b9a-48c8-91ad-1fc1c6b8fab0", upload_time: "2026-06-17T11:10:21Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]} [2026-06-17 11:11:11.479] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:21Z", "value" => "morefun"} [2026-06-17 11:11:11.512] [DEBUG] QUERY OK db=32.0ms queue=0.1ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "morefun", "vendor", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308511, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.512] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:21Z", "value" => "kiosk_launcher"} [2026-06-17 11:11:11.530] [DEBUG] QUERY OK db=17.2ms queue=0.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "kiosk_launcher", "model", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308512, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.530] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:21Z", "value" => "1.0"} [2026-06-17 11:11:11.542] [DEBUG] QUERY OK db=11.0ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "1.0", "app_version", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308513, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.542] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:21Z", "value" => "13"} [2026-06-17 11:11:11.556] [DEBUG] QUERY OK db=13.1ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "13", "android_version", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308514, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.556] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:21Z", "value" => "764"} [2026-06-17 11:11:11.576] [DEBUG] QUERY OK db=19.5ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "764", "ram_free_mb", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308515, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.577] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:21Z", "value" => "WIFI"} [2026-06-17 11:11:11.610] [DEBUG] QUERY OK db=31.6ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "WIFI", "network_type", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308516, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.612] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:21Z", "value" => "true"} [2026-06-17 11:11:11.631] [DEBUG] QUERY OK db=18.8ms queue=0.6ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "true", "kiosk_active", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308517, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.632] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:21Z", "value" => ""} [2026-06-17 11:11:11.643] [DEBUG] QUERY OK db=10.6ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:10:21Z", "sim_operator", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308518, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.643] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"} [2026-06-17 11:11:11.654] [DEBUG] QUERY OK db=10.3ms idle=12.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "UNKNOWN", "sim_number", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308519, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.654] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"} [2026-06-17 11:11:11.674] [DEBUG] QUERY OK db=19.7ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "UNKNOWN", "sim_iccid", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308520, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.675] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"} [2026-06-17 11:11:11.708] [DEBUG] QUERY OK db=32.5ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "UNKNOWN", "sim_imsi", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308521, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.709] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"} [2026-06-17 11:11:11.729] [DEBUG] QUERY OK db=19.0ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "UNKNOWN", "sim_iccid2", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308522, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.729] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:21Z", "value" => "UNKNOWN"} [2026-06-17 11:11:11.745] [DEBUG] QUERY OK db=14.0ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "UNKNOWN", "sim_imsi2", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308523, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.746] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:21Z", "value" => "8"} [2026-06-17 11:11:11.767] [DEBUG] QUERY OK db=20.3ms queue=0.1ms idle=17.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "8", "data_usage_mb", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308524, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.767] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:21Z", "value" => "0"} [2026-06-17 11:11:11.802] [DEBUG] QUERY OK db=33.8ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "0", "mobile_data_mb", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308525, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:11.802] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:11:11.824] [DEBUG] QUERY OK db=20.5ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39409, ~N[2026-06-17 11:11:11], ~N[2026-06-17 11:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:11.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308526, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:10:21Z", message: nil, status_log_id: 39409, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:11], updated_at: ~N[2026-06-17 11:11:11]}} [2026-06-17 11:11:17.647] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:11:17.647] [INFO ] Incoming JSON payload: {"oid":"20b4efcc-0090-45da-91d7-a4a5a5ea18bc","sn":"98251226730002","uploadTime":"2026-06-17T11:10:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:10:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:10:27Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:11:17.649] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "20b4efcc-0090-45da-91d7-a4a5a5ea18bc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:27Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:27Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:10:27Z", "vendor" => "morefun"} [2026-06-17 11:11:17.649] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:11:17.650] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:11:17.650] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:11:17.651] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1180.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-06-17 11:11:17.652] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=842.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-06-17 11:11:17.652] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:11:17.653] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:11:17.654] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:11:17.678] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:11:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:11:17.678] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:11:17.679] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=24.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:11:17.694] [DEBUG] QUERY OK source="tms_terminals" db=13.7ms queue=0.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:11:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:11:17.715] [DEBUG] QUERY OK db=20.8ms idle=15.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "20b4efcc-0090-45da-91d7-a4a5a5ea18bc", "2026-06-17T11:10:27Z", ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:11:17.715] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39410, oid: "20b4efcc-0090-45da-91d7-a4a5a5ea18bc", upload_time: "2026-06-17T11:10:27Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]} [2026-06-17 11:11:17.715] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:27Z", "value" => "morefun"} [2026-06-17 11:11:17.747] [DEBUG] QUERY OK db=30.8ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "morefun", "vendor", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308527, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.747] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:27Z", "value" => "kiosk_launcher"} [2026-06-17 11:11:17.768] [DEBUG] QUERY OK db=20.5ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "kiosk_launcher", "model", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308528, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.769] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:27Z", "value" => "1.0"} [2026-06-17 11:11:17.784] [DEBUG] QUERY OK db=14.6ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "1.0", "app_version", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308529, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.784] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:27Z", "value" => "13"} [2026-06-17 11:11:17.808] [DEBUG] QUERY OK db=23.8ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "13", "android_version", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308530, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.809] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:27Z", "value" => "764"} [2026-06-17 11:11:17.834] [DEBUG] QUERY OK db=23.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "764", "ram_free_mb", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308531, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.834] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:27Z", "value" => "WIFI"} [2026-06-17 11:11:17.865] [DEBUG] QUERY OK db=30.2ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "WIFI", "network_type", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308532, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.866] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:27Z", "value" => "true"} [2026-06-17 11:11:17.881] [DEBUG] QUERY OK db=14.6ms queue=0.2ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "true", "kiosk_active", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308533, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.882] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:27Z", "value" => ""} [2026-06-17 11:11:17.896] [DEBUG] QUERY OK db=13.6ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:10:27Z", "sim_operator", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308534, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.896] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"} [2026-06-17 11:11:17.922] [DEBUG] QUERY OK db=25.4ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "UNKNOWN", "sim_number", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308535, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.922] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"} [2026-06-17 11:11:17.945] [DEBUG] QUERY OK db=22.3ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "UNKNOWN", "sim_iccid", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308536, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.945] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"} [2026-06-17 11:11:17.970] [DEBUG] QUERY OK db=24.4ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "UNKNOWN", "sim_imsi", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308537, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.971] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"} [2026-06-17 11:11:17.986] [DEBUG] QUERY OK db=15.3ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "UNKNOWN", "sim_iccid2", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:17.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308538, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:17.987] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:27Z", "value" => "UNKNOWN"} [2026-06-17 11:11:18.009] [DEBUG] QUERY OK db=22.0ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "UNKNOWN", "sim_imsi2", 39410, ~N[2026-06-17 11:11:17], ~N[2026-06-17 11:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:18.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308539, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:17], updated_at: ~N[2026-06-17 11:11:17]}} [2026-06-17 11:11:18.009] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:27Z", "value" => "8"} [2026-06-17 11:11:18.033] [DEBUG] QUERY OK db=23.1ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "8", "data_usage_mb", 39410, ~N[2026-06-17 11:11:18], ~N[2026-06-17 11:11:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:18.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308540, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:18], updated_at: ~N[2026-06-17 11:11:18]}} [2026-06-17 11:11:18.033] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:27Z", "value" => "0"} [2026-06-17 11:11:18.060] [DEBUG] QUERY OK db=25.8ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "0", "mobile_data_mb", 39410, ~N[2026-06-17 11:11:18], ~N[2026-06-17 11:11:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:18.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308541, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:18], updated_at: ~N[2026-06-17 11:11:18]}} [2026-06-17 11:11:18.061] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:11:18.079] [DEBUG] QUERY OK db=16.8ms queue=0.2ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39410, ~N[2026-06-17 11:11:18], ~N[2026-06-17 11:11:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:18.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308542, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:10:27Z", message: nil, status_log_id: 39410, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:18], updated_at: ~N[2026-06-17 11:11:18]}} [2026-06-17 11:11:23.699] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:11:23.699] [INFO ] Incoming JSON payload: {"oid":"8fda5dfe-53e6-4ae2-816e-7e73233a5c85","sn":"98251226730002","uploadTime":"2026-06-17T11:10:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"ram_free_mb","value":"764","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:10:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:10:33Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:11:23.701] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8fda5dfe-53e6-4ae2-816e-7e73233a5c85", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:33Z", "value" => "764"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:33Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:10:33Z", "vendor" => "morefun"} [2026-06-17 11:11:23.701] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:11:23.702] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:11:23.702] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:11:23.703] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=868.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-06-17 11:11:23.705] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=535.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-06-17 11:11:23.705] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:11:23.706] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:11:23.707] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:11:23.734] [DEBUG] QUERY OK source="tms_terminals" db=27.2ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:11:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:11:23.734] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:11:23.736] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.4ms idle=28.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:11:23.751] [DEBUG] QUERY OK source="tms_terminals" db=14.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:11:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:11:23.770] [DEBUG] QUERY OK db=18.4ms idle=15.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8fda5dfe-53e6-4ae2-816e-7e73233a5c85", "2026-06-17T11:10:33Z", ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:11:23.770] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39411, oid: "8fda5dfe-53e6-4ae2-816e-7e73233a5c85", upload_time: "2026-06-17T11:10:33Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]} [2026-06-17 11:11:23.770] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:33Z", "value" => "morefun"} [2026-06-17 11:11:23.795] [DEBUG] QUERY OK db=24.8ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "morefun", "vendor", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.796] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308543, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.796] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:33Z", "value" => "kiosk_launcher"} [2026-06-17 11:11:23.826] [DEBUG] QUERY OK db=29.5ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "kiosk_launcher", "model", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308544, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.827] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:33Z", "value" => "1.0"} [2026-06-17 11:11:23.842] [DEBUG] QUERY OK db=15.4ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "1.0", "app_version", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308545, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.843] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:33Z", "value" => "13"} [2026-06-17 11:11:23.862] [DEBUG] QUERY OK db=18.3ms idle=4.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "13", "android_version", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308546, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.865] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:33Z", "value" => "764"} [2026-06-17 11:11:23.899] [DEBUG] QUERY OK db=34.2ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "764", "ram_free_mb", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308547, itemkey: "ram_free_mb", value: "764", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.901] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:33Z", "value" => "WIFI"} [2026-06-17 11:11:23.931] [DEBUG] QUERY OK db=29.5ms queue=0.1ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "WIFI", "network_type", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308548, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.931] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:33Z", "value" => "true"} [2026-06-17 11:11:23.943] [DEBUG] QUERY OK db=11.5ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "true", "kiosk_active", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308549, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.944] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:33Z", "value" => ""} [2026-06-17 11:11:23.962] [DEBUG] QUERY OK db=18.3ms idle=13.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:10:33Z", "sim_operator", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308550, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.963] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"} [2026-06-17 11:11:23.978] [DEBUG] QUERY OK db=14.8ms idle=19.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "UNKNOWN", "sim_number", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:23.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308551, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:23.978] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"} [2026-06-17 11:11:24.002] [DEBUG] QUERY OK db=23.5ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "UNKNOWN", "sim_iccid", 39411, ~N[2026-06-17 11:11:23], ~N[2026-06-17 11:11:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:24.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308552, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:23], updated_at: ~N[2026-06-17 11:11:23]}} [2026-06-17 11:11:24.003] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"} [2026-06-17 11:11:24.036] [DEBUG] QUERY OK db=32.0ms queue=0.1ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "UNKNOWN", "sim_imsi", 39411, ~N[2026-06-17 11:11:24], ~N[2026-06-17 11:11:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:24.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308553, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:24], updated_at: ~N[2026-06-17 11:11:24]}} [2026-06-17 11:11:24.036] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"} [2026-06-17 11:11:24.048] [DEBUG] QUERY OK db=11.7ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "UNKNOWN", "sim_iccid2", 39411, ~N[2026-06-17 11:11:24], ~N[2026-06-17 11:11:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:24.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308554, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:24], updated_at: ~N[2026-06-17 11:11:24]}} [2026-06-17 11:11:24.049] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:33Z", "value" => "UNKNOWN"} [2026-06-17 11:11:24.066] [DEBUG] QUERY OK db=17.0ms idle=13.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "UNKNOWN", "sim_imsi2", 39411, ~N[2026-06-17 11:11:24], ~N[2026-06-17 11:11:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:24.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308555, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:24], updated_at: ~N[2026-06-17 11:11:24]}} [2026-06-17 11:11:24.067] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:33Z", "value" => "8"} [2026-06-17 11:11:24.099] [DEBUG] QUERY OK db=32.5ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "8", "data_usage_mb", 39411, ~N[2026-06-17 11:11:24], ~N[2026-06-17 11:11:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:24.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308556, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:24], updated_at: ~N[2026-06-17 11:11:24]}} [2026-06-17 11:11:24.100] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:33Z", "value" => "0"} [2026-06-17 11:11:24.126] [DEBUG] QUERY OK db=25.1ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "0", "mobile_data_mb", 39411, ~N[2026-06-17 11:11:24], ~N[2026-06-17 11:11:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:24.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308557, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:24], updated_at: ~N[2026-06-17 11:11:24]}} [2026-06-17 11:11:24.127] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:11:24.148] [DEBUG] QUERY OK db=19.9ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39411, ~N[2026-06-17 11:11:24], ~N[2026-06-17 11:11:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:24.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308558, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:10:33Z", message: nil, status_log_id: 39411, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:24], updated_at: ~N[2026-06-17 11:11:24]}} [2026-06-17 11:11:29.792] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:11:29.792] [INFO ] Incoming JSON payload: {"oid":"2aa61b3c-c0dc-4168-a4ec-97a99325d292","sn":"98251226730002","uploadTime":"2026-06-17T11:10:39Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:10:39Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:10:39Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:11:29.794] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2aa61b3c-c0dc-4168-a4ec-97a99325d292", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:39Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:39Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:39Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:39Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:39Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:39Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:39Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:39Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:39Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:39Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:10:39Z", "vendor" => "morefun"} [2026-06-17 11:11:29.794] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:11:29.794] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:11:29.794] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:11:29.795] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=941.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-06-17 11:11:29.796] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=325.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-06-17 11:11:29.796] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:11:29.797] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:11:29.797] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:11:29.819] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:11:29], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:11:29.819] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:11:29.820] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=22.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:11:29.854] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:11:29], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:11:29.875] [DEBUG] QUERY OK db=20.5ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "2aa61b3c-c0dc-4168-a4ec-97a99325d292", "2026-06-17T11:10:39Z", ~N[2026-06-17 11:11:29], ~N[2026-06-17 11:11:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:11:29.876] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39412, oid: "2aa61b3c-c0dc-4168-a4ec-97a99325d292", upload_time: "2026-06-17T11:10:39Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:29], updated_at: ~N[2026-06-17 11:11:29]} [2026-06-17 11:11:29.876] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:39Z", "value" => "morefun"} [2026-06-17 11:11:29.894] [DEBUG] QUERY OK db=18.0ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "morefun", "vendor", 39412, ~N[2026-06-17 11:11:29], ~N[2026-06-17 11:11:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:29.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308559, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:29], updated_at: ~N[2026-06-17 11:11:29]}} [2026-06-17 11:11:29.895] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:39Z", "value" => "kiosk_launcher"} [2026-06-17 11:11:29.910] [DEBUG] QUERY OK db=14.6ms queue=0.1ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "kiosk_launcher", "model", 39412, ~N[2026-06-17 11:11:29], ~N[2026-06-17 11:11:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:29.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308560, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:29], updated_at: ~N[2026-06-17 11:11:29]}} [2026-06-17 11:11:29.910] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:39Z", "value" => "1.0"} [2026-06-17 11:11:29.941] [DEBUG] QUERY OK db=29.4ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "1.0", "app_version", 39412, ~N[2026-06-17 11:11:29], ~N[2026-06-17 11:11:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:29.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308561, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:29], updated_at: ~N[2026-06-17 11:11:29]}} [2026-06-17 11:11:29.941] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:39Z", "value" => "13"} [2026-06-17 11:11:29.965] [DEBUG] QUERY OK db=23.4ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "13", "android_version", 39412, ~N[2026-06-17 11:11:29], ~N[2026-06-17 11:11:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:29.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308562, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:29], updated_at: ~N[2026-06-17 11:11:29]}} [2026-06-17 11:11:29.965] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:39Z", "value" => "762"} [2026-06-17 11:11:29.982] [DEBUG] QUERY OK db=16.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "762", "ram_free_mb", 39412, ~N[2026-06-17 11:11:29], ~N[2026-06-17 11:11:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:29.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308563, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:29], updated_at: ~N[2026-06-17 11:11:29]}} [2026-06-17 11:11:29.983] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:39Z", "value" => "WIFI"} [2026-06-17 11:11:29.998] [DEBUG] QUERY OK db=14.7ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "WIFI", "network_type", 39412, ~N[2026-06-17 11:11:29], ~N[2026-06-17 11:11:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:29.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308564, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:29], updated_at: ~N[2026-06-17 11:11:29]}} [2026-06-17 11:11:29.999] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:39Z", "value" => "true"} [2026-06-17 11:11:30.018] [DEBUG] QUERY OK db=18.5ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "true", "kiosk_active", 39412, ~N[2026-06-17 11:11:29], ~N[2026-06-17 11:11:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308565, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:29], updated_at: ~N[2026-06-17 11:11:29]}} [2026-06-17 11:11:30.018] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:39Z", "value" => ""} [2026-06-17 11:11:30.051] [DEBUG] QUERY OK db=32.3ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:10:39Z", "sim_operator", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308566, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:30.051] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"} [2026-06-17 11:11:30.071] [DEBUG] QUERY OK db=19.6ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "UNKNOWN", "sim_number", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308567, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:30.072] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"} [2026-06-17 11:11:30.085] [DEBUG] QUERY OK db=12.3ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "UNKNOWN", "sim_iccid", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308568, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:30.085] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"} [2026-06-17 11:11:30.100] [DEBUG] QUERY OK db=14.9ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "UNKNOWN", "sim_imsi", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308569, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:30.101] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"} [2026-06-17 11:11:30.138] [DEBUG] QUERY OK db=35.8ms queue=0.4ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "UNKNOWN", "sim_iccid2", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308570, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:30.139] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:39Z", "value" => "UNKNOWN"} [2026-06-17 11:11:30.162] [DEBUG] QUERY OK db=22.7ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "UNKNOWN", "sim_imsi2", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308571, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:30.162] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:39Z", "value" => "8"} [2026-06-17 11:11:30.177] [DEBUG] QUERY OK db=14.1ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "8", "data_usage_mb", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308572, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:30.177] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:39Z", "value" => "0"} [2026-06-17 11:11:30.189] [DEBUG] QUERY OK db=11.4ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "0", "mobile_data_mb", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308573, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:30.190] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:11:30.212] [DEBUG] QUERY OK db=20.6ms queue=0.1ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:39Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39412, ~N[2026-06-17 11:11:30], ~N[2026-06-17 11:11:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:30.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308574, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:10:39Z", message: nil, status_log_id: 39412, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:30], updated_at: ~N[2026-06-17 11:11:30]}} [2026-06-17 11:11:36.150] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 11:11:36.151] [INFO ] Incoming JSON payload: {"oid":"3cd6c3fe-b854-4988-8114-a042d7b8e489","sn":"98251226730002","uploadTime":"2026-06-17T11:10:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"ram_free_mb","value":"763","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"data_usage_mb","value":"8","timestamp":"2026-06-17T11:10:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T11:10: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.res (truncated) [2026-06-17 11:11:36.155] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3cd6c3fe-b854-4988-8114-a042d7b8e489", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:45Z", "value" => "763"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:45Z", "value" => "8"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T11:10:45Z", "vendor" => "morefun"} [2026-06-17 11:11:36.156] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 11:11:36.156] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 11:11:36.156] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 11:11:36.157] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=686.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-06-17 11:11:36.159] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=276.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-06-17 11:11:36.159] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 11:11:36.160] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 11:11:36.160] [INFO ] Terminal updated: 98251226730002 [2026-06-17 11:11:36.171] [DEBUG] QUERY OK source="tms_terminals" db=10.5ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 11:11:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 11:11:36.171] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 11:11:36.172] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=11.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 11:11:36.202] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 11:11:36], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 11:11:36.223] [DEBUG] QUERY OK db=19.7ms idle=30.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3cd6c3fe-b854-4988-8114-a042d7b8e489", "2026-06-17T11:10:45Z", ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 11:11:36.223] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39413, oid: "3cd6c3fe-b854-4988-8114-a042d7b8e489", upload_time: "2026-06-17T11:10:45Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]} [2026-06-17 11:11:36.223] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T11:10:45Z", "value" => "morefun"} [2026-06-17 11:11:36.252] [DEBUG] QUERY OK db=28.9ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "morefun", "vendor", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308575, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.252] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T11:10:45Z", "value" => "kiosk_launcher"} [2026-06-17 11:11:36.270] [DEBUG] QUERY OK db=17.2ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "kiosk_launcher", "model", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308576, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.270] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T11:10:45Z", "value" => "1.0"} [2026-06-17 11:11:36.290] [DEBUG] QUERY OK db=19.0ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "1.0", "app_version", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308577, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.290] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T11:10:45Z", "value" => "13"} [2026-06-17 11:11:36.314] [DEBUG] QUERY OK db=23.5ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "13", "android_version", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308578, itemkey: "android_version", value: "13", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.314] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T11:10:45Z", "value" => "763"} [2026-06-17 11:11:36.346] [DEBUG] QUERY OK db=29.9ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "763", "ram_free_mb", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308579, itemkey: "ram_free_mb", value: "763", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.347] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T11:10:45Z", "value" => "WIFI"} [2026-06-17 11:11:36.361] [DEBUG] QUERY OK db=14.1ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "WIFI", "network_type", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308580, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.362] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T11:10:45Z", "value" => "true"} [2026-06-17 11:11:36.399] [DEBUG] QUERY OK db=36.4ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "true", "kiosk_active", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308581, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.401] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T11:10:45Z", "value" => ""} [2026-06-17 11:11:36.461] [DEBUG] QUERY OK db=59.3ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T11:10:45Z", "sim_operator", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308582, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.463] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"} [2026-06-17 11:11:36.497] [DEBUG] QUERY OK db=31.5ms queue=0.9ms idle=65.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "UNKNOWN", "sim_number", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308583, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.497] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"} [2026-06-17 11:11:36.521] [DEBUG] QUERY OK db=23.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "UNKNOWN", "sim_iccid", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308584, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.521] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"} [2026-06-17 11:11:36.537] [DEBUG] QUERY OK db=13.7ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "UNKNOWN", "sim_imsi", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308585, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.539] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"} [2026-06-17 11:11:36.557] [DEBUG] QUERY OK db=17.4ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "UNKNOWN", "sim_iccid2", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308586, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.557] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T11:10:45Z", "value" => "UNKNOWN"} [2026-06-17 11:11:36.581] [DEBUG] QUERY OK db=23.4ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "UNKNOWN", "sim_imsi2", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308587, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.583] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T11:10:45Z", "value" => "8"} [2026-06-17 11:11:36.616] [DEBUG] QUERY OK db=32.1ms queue=0.2ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "8", "data_usage_mb", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308588, itemkey: "data_usage_mb", value: "8", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.616] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T11:10:45Z", "value" => "0"} [2026-06-17 11:11:36.630] [DEBUG] QUERY OK db=13.8ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10:45Z", "0", "mobile_data_mb", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308589, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 11:11:36.631] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T11:10: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 11:11:36.649] [DEBUG] QUERY OK db=16.9ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T11:10: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39413, ~N[2026-06-17 11:11:36], ~N[2026-06-17 11:11:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 11:11:36.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 308590, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T11:10:45Z", message: nil, status_log_id: 39413, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 11:11:36], updated_at: ~N[2026-06-17 11:11:36]}} [2026-06-17 13:00:39.470] [INFO ] [Ysp.Scheduler] Started. SFTP in 13h 59m, MIS in 17h 59m [2026-06-17 13:00:39.496] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 13:00:39.508] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 13:00:40.986] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 13:00:40.986] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 13:00:40.987] [INFO ] Building initial filter cache... [2026-06-17 13:00:40.999] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.6ms idle=1719.5ms 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-06-17 13:00:41.005] [DEBUG] QUERY OK source="filter_usage" db=0.6ms queue=1.2ms idle=782.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-06-17 13:00:41.006] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 13:00:41.107] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 13:00:41.154] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 13:00:41.174] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 13:00:41.900] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 55µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 13:00:43.122] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 13:00:43.203] [DEBUG] QUERY OK source="users_tokens" db=0.9ms queue=0.7ms idle=255.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 13:00:43.174945Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 13:00:43.230] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.8ms idle=1140.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 13:00:43.235] [DEBUG] QUERY OK source="app_packages" db=1.4ms queue=0.5ms idle=991.4ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 13:00:43.248] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.3ms idle=12.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 13:00:43.256] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.9ms idle=8.7ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 13:00:43.256] [DEBUG] Replied in 156ms [2026-06-17 13:00:43.263] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 13:00:43.265] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=15.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 13:00:43.266] [DEBUG] Replied in 3ms [2026-06-17 13:00:47.168] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:00:47.168] [INFO ] Incoming JSON payload: {"oid":"b0298500-e890-4ecf-805b-0e1c1899db9f","sn":"98251226730002","uploadTime":"2026-06-17T12:59:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"ram_free_mb","value":"831","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"data_usage_mb","value":"19","timestamp":"2026-06-17T12:59:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T12:59:57Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 13:00:47.176] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b0298500-e890-4ecf-805b-0e1c1899db9f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:59:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T12:59:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:59:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:59:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:59:57Z", "value" => "831"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:59:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:59:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:59:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:59:57Z", "value" => "19"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:59:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:59:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T12:59:57Z", "vendor" => "morefun"} [2026-06-17 13:00:47.177] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:00:47.190] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:00:47.191] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 13:00:47.199] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=2.0ms idle=940.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-06-17 13:00:47.200] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.6ms idle=106.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-06-17 13:00:47.200] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:00:47.202] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.5ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:00:47.219] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:00:47.258] [DEBUG] QUERY OK source="tms_terminals" db=30.4ms queue=0.3ms idle=20.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:00:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:00:47.267] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:00:47.270] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=1.4ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:00:47.310] [DEBUG] QUERY OK source="tms_terminals" db=35.6ms queue=0.3ms idle=13.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:00:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:00:47.345] [DEBUG] QUERY OK db=12.1ms queue=0.5ms idle=62.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b0298500-e890-4ecf-805b-0e1c1899db9f", "2026-06-17T12:59:57Z", ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:00:47.359] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39591, oid: "b0298500-e890-4ecf-805b-0e1c1899db9f", upload_time: "2026-06-17T12:59:57Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]} [2026-06-17 13:00:47.359] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T12:59:57Z", "value" => "morefun"} [2026-06-17 13:00:47.386] [DEBUG] QUERY OK db=25.0ms queue=0.9ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "morefun", "vendor", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311375, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.386] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T12:59:57Z", "value" => "kiosk_launcher"} [2026-06-17 13:00:47.432] [DEBUG] QUERY OK db=44.5ms queue=0.8ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "kiosk_launcher", "model", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311376, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.432] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T12:59:57Z", "value" => "1.0"} [2026-06-17 13:00:47.523] [DEBUG] QUERY OK db=89.9ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "1.0", "app_version", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311377, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.523] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T12:59:57Z", "value" => "13"} [2026-06-17 13:00:47.548] [DEBUG] QUERY OK db=24.8ms queue=0.1ms idle=91.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "13", "android_version", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311378, itemkey: "android_version", value: "13", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.549] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T12:59:57Z", "value" => "831"} [2026-06-17 13:00:47.574] [DEBUG] QUERY OK db=24.8ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "831", "ram_free_mb", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311379, itemkey: "ram_free_mb", value: "831", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.575] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T12:59:57Z", "value" => "WIFI"} [2026-06-17 13:00:47.608] [DEBUG] QUERY OK db=33.3ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "WIFI", "network_type", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311380, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.609] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T12:59:57Z", "value" => "true"} [2026-06-17 13:00:47.632] [DEBUG] QUERY OK db=22.8ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "true", "kiosk_active", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311381, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.633] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T12:59:57Z", "value" => ""} [2026-06-17 13:00:47.667] [DEBUG] QUERY OK db=33.5ms queue=0.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T12:59:57Z", "sim_operator", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311382, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.668] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"} [2026-06-17 13:00:47.683] [DEBUG] QUERY OK db=15.4ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "UNKNOWN", "sim_number", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311383, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.684] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"} [2026-06-17 13:00:47.707] [DEBUG] QUERY OK db=22.7ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "UNKNOWN", "sim_iccid", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311384, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.708] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"} [2026-06-17 13:00:47.730] [DEBUG] QUERY OK db=22.2ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "UNKNOWN", "sim_imsi", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311385, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.731] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"} [2026-06-17 13:00:47.764] [DEBUG] QUERY OK db=32.4ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "UNKNOWN", "sim_iccid2", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311386, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.764] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T12:59:57Z", "value" => "UNKNOWN"} [2026-06-17 13:00:47.789] [DEBUG] QUERY OK db=24.6ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "UNKNOWN", "sim_imsi2", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311387, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.789] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T12:59:57Z", "value" => "19"} [2026-06-17 13:00:47.806] [DEBUG] QUERY OK db=15.4ms queue=0.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "19", "data_usage_mb", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311388, itemkey: "data_usage_mb", value: "19", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.806] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T12:59:57Z", "value" => "0"} [2026-06-17 13:00:47.842] [DEBUG] QUERY OK db=32.9ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "0", "mobile_data_mb", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311389, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.843] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T12:59:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 13:00:47.867] [DEBUG] QUERY OK db=23.2ms queue=0.3ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T12:59:57Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39591, ~N[2026-06-17 13:00:47], ~N[2026-06-17 13:00:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:47.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311390, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T12:59:57Z", message: nil, status_log_id: 39591, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:47], updated_at: ~N[2026-06-17 13:00:47]}} [2026-06-17 13:00:47.870] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=0.1ms idle=26.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:00:47.875] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:00:52.696] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:00:52.696] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T13:00:02Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T13:00:02Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T13:00:02Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T13:00:02Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T13:00:02Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T13:00:02Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T13:00:02Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T13:00:02Z","value":""},{"itemkey":"latitude","message":"Device Latitude","timestamp":"2026-06-17T13:00:02Z","value":"13.024761666666667"},{"itemkey":"longitude","message":"Device Longitude","timestamp":"2026-06-17T13:00:02Z","value":"77.63998833333333"}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T13:00:02Z","vendor":"MoreFun"} [2026-06-17 13:00:52.696] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:00:02Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:00:02Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:00:02Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:00:02Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:00:02Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:00:02Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:00:02Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:00:02Z", "value" => ""}, %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:00:02Z", "value" => "13.024761666666667"}, %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:00:02Z", "value" => "77.63998833333333"}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:02Z", "vendor" => "MoreFun"} [2026-06-17 13:00:52.696] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 13:00:52.696] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:00:52.697] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 13:00:52.700] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=1424.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-06-17 13:00:52.701] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.6ms idle=425.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:00:52.709] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.4ms idle=8.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-06-17 13:00:52.721] [DEBUG] QUERY OK source="parameter_definitions" db=2.2ms queue=0.7ms idle=15.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-06-17 13:00:52.734] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms queue=1.5ms idle=22.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:00:52.764] [DEBUG] QUERY OK source="pos_merchant" db=2.5ms queue=14.6ms idle=27.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:00:52.788] [DEBUG] QUERY OK db=2.0ms queue=1.8ms idle=1694.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 ["372916040000000"] [2026-06-17 13:00:52.791] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:00:52.812] [DEBUG] QUERY OK source="pos_terminal_data" db=4.5ms queue=1.4ms idle=72.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:00:52.820] [DEBUG] QUERY OK source="address" db=0.4ms queue=2.6ms idle=52.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:00:52.820] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 13:00:52.829] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 13:00:52.860] [DEBUG] QUERY OK db=21.9ms queue=2.1ms idle=23.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ab5599b8ea023a5e09452ac05a9d89066981e1d79df1c51976a0524a6e15146e", 3842, 940, ~U[2026-06-17 13:00:52Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:00:52], ~N[2026-06-17 13:00:52]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:00:52.861] [INFO ] AutoPushService: Created push log 29767 for MF919 params.zip [2026-06-17 13:00:52.865] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 3842, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:00:52.866] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:00:52.870] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 13:00:52.880] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.7ms idle=59.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-06-17 13:00:52.893] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:00:52.921] [DEBUG] QUERY OK db=26.6ms queue=0.6ms idle=33.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "f6037f5ce228c02f3da5d58114838f3b7eb3017fb328b86b7621309d18a4cfe3", 2627, 17947, ~U[2026-06-17 13:00:52Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:00:52], ~N[2026-06-17 13:00:52]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:00:52.922] [INFO ] AutoPushService: Created push log 29768 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:00:52.922] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2627, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:00:52.922] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:00:52.923] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 13:00:52.925] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=1.0ms idle=43.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-06-17 13:00:52.932] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 13:00:52.933] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=11.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:00:52.935] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:00:52.994] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:00:52.995] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:00:52.995] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:00:52.997] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=69.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-06-17 13:00:52.997] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:00:52.997] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 13:00:52.999] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=64.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:00:53.056] [DEBUG] QUERY OK source="tms_terminals" db=14.1ms queue=40.9ms idle=3.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 13:00:53], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 13:00:53.056] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:00:53.056] [INFO ] Event published: terminal_updated [2026-06-17 13:00:53.056] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 13:00:53.056] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 13:00:53.057] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 13:00:53.063] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=0.4ms idle=63.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-06-17 13:00:53], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 13:00:53.064] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.6ms idle=7.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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 13:00:53.072] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.5ms idle=6.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-06-17 13:00:53.072] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 13:00:53.129] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms queue=40.9ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", ~N[2026-06-17 13:00:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:00:53.129] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:00:53.130] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=57.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:00:53.205] [DEBUG] QUERY OK source="tms_terminals" db=33.7ms queue=41.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:00:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:00:53.230] [DEBUG] QUERY OK db=24.0ms queue=0.1ms idle=75.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T13:00:02Z", ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:00:53.230] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39592, oid: "organization_id", upload_time: "2026-06-17T13:00:02Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]} [2026-06-17 13:00:53.230] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:00:02Z", "value" => "online"} [2026-06-17 13:00:53.263] [DEBUG] QUERY OK db=31.2ms queue=0.6ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T13:00:02Z", "online", "status", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311391, itemkey: "status", value: "online", timestamp: "2026-06-17T13:00:02Z", message: "Terminal status update", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.263] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 13:00:53.264] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:00:02Z", "value" => "24"} [2026-06-17 13:00:53.264] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:00:53.293] [DEBUG] QUERY OK db=28.0ms queue=1.1ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T13:00:02Z", "24", "battery", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311392, itemkey: "battery", value: "24", timestamp: "2026-06-17T13:00:02Z", message: "Battery level", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.294] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:00:02Z", "value" => "online"} [2026-06-17 13:00:53.316] [DEBUG] QUERY OK db=22.3ms idle=16.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T13:00:02Z", "online", "network", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311393, itemkey: "network", value: "online", timestamp: "2026-06-17T13:00:02Z", message: "Network connectivity", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.317] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 13:00:53.317] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:00:02Z", "value" => "0"} [2026-06-17 13:00:53.317] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:00:53.342] [DEBUG] QUERY OK db=24.0ms queue=0.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T13:00:02Z", "0", "cpu", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311394, itemkey: "cpu", value: "0", timestamp: "2026-06-17T13:00:02Z", message: "CPU usage percentage", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.342] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:00:02Z", "value" => ""} [2026-06-17 13:00:53.415] [DEBUG] QUERY OK db=31.3ms queue=40.8ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T13:00:02Z", "parameter_config", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311395, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T13:00:02Z", message: "Current parameters version", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.415] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:00:02Z", "value" => ""} [2026-06-17 13:00:53.479] [DEBUG] QUERY OK db=22.2ms queue=41.0ms idle=73.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T13:00:02Z", "emv_config", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311396, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T13:00:02Z", message: "Current EMV config version", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.479] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:00:02Z", "value" => ""} [2026-06-17 13:00:53.498] [DEBUG] QUERY OK db=17.8ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T13:00:02Z", "keys_config", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311397, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T13:00:02Z", message: "Current keys config version", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.498] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:00:02Z", "value" => ""} [2026-06-17 13:00:53.517] [DEBUG] QUERY OK db=17.9ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T13:00:02Z", "application", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311398, itemkey: "application", value: nil, timestamp: "2026-06-17T13:00:02Z", message: "Current application version", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.518] [INFO ] Saving status item: %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:00:02Z", "value" => "13.024761666666667"} [2026-06-17 13:00:53.541] [DEBUG] QUERY OK db=22.3ms queue=0.1ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Latitude", "2026-06-17T13:00:02Z", "13.024761666666667", "latitude", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311399, itemkey: "latitude", value: "13.024761666666667", timestamp: "2026-06-17T13:00:02Z", message: "Device Latitude", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.541] [INFO ] Saving status item: %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:00:02Z", "value" => "77.63998833333333"} [2026-06-17 13:00:53.565] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Longitude", "2026-06-17T13:00:02Z", "77.63998833333333", "longitude", 39592, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311400, itemkey: "longitude", value: "77.63998833333333", timestamp: "2026-06-17T13:00:02Z", message: "Device Longitude", status_log_id: 39592, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.567] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=25.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:00:53.572] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:00:53.575] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:00:53.575] [INFO ] Incoming JSON payload: {"oid":"c8810885-52a4-4050-b670-0b2fa3b9feb1","sn":"98251226730002","uploadTime":"2026-06-17T13:00:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"ram_free_mb","value":"749","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"data_usage_mb","value":"19","timestamp":"2026-06-17T13:00:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:00:03Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 13:00:53.577] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c8810885-52a4-4050-b670-0b2fa3b9feb1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:03Z", "value" => "749"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:03Z", "value" => "19"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:03Z", "vendor" => "morefun"} [2026-06-17 13:00:53.577] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:00:53.578] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:00:53.578] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 13:00:53.579] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=12.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 13:00:53.582] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=11.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-06-17 13:00:53.582] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:00:53.583] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:00:53.648] [DEBUG] QUERY OK source="tms_terminals" db=22.8ms queue=41.8ms idle=1.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 13:00:53], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 13:00:53.649] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:00:53.649] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 13:00:53.649] [INFO ] Event published: terminal_updated [2026-06-17 13:00:53.649] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 13:00:53.649] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 13:00:53.651] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.4ms idle=65.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-06-17 13:00:53], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 13:00:53.651] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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 WHERE (t0.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 13:00:53.652] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.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_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-06-17 13:00:53.652] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 13:00:53.718] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms queue=41.2ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", ~N[2026-06-17 13:00:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:00:53.719] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:00:53.719] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:00:53.784] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms queue=40.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:00:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:00:53.816] [DEBUG] QUERY OK db=31.4ms idle=64.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c8810885-52a4-4050-b670-0b2fa3b9feb1", "2026-06-17T13:00:03Z", ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:00:53.816] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39593, oid: "c8810885-52a4-4050-b670-0b2fa3b9feb1", upload_time: "2026-06-17T13:00:03Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]} [2026-06-17 13:00:53.816] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:03Z", "value" => "morefun"} [2026-06-17 13:00:53.873] [DEBUG] QUERY OK db=15.1ms queue=41.0ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "morefun", "vendor", 39593, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311401, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.873] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:03Z", "value" => "kiosk_launcher"} [2026-06-17 13:00:53.939] [DEBUG] QUERY OK db=24.1ms queue=40.9ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "kiosk_launcher", "model", 39593, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311402, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.939] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:03Z", "value" => "1.0"} [2026-06-17 13:00:53.972] [DEBUG] QUERY OK db=32.3ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "1.0", "app_version", 39593, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311403, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.972] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:03Z", "value" => "13"} [2026-06-17 13:00:53.993] [DEBUG] QUERY OK db=20.4ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "13", "android_version", 39593, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:53.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311404, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:53.993] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:03Z", "value" => "749"} [2026-06-17 13:00:54.015] [DEBUG] QUERY OK db=20.0ms queue=0.1ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "749", "ram_free_mb", 39593, ~N[2026-06-17 13:00:53], ~N[2026-06-17 13:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311405, itemkey: "ram_free_mb", value: "749", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:53], updated_at: ~N[2026-06-17 13:00:53]}} [2026-06-17 13:00:54.017] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:03Z", "value" => "WIFI"} [2026-06-17 13:00:54.050] [DEBUG] QUERY OK db=32.7ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "WIFI", "network_type", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311406, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.050] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:03Z", "value" => "true"} [2026-06-17 13:00:54.074] [DEBUG] QUERY OK db=23.3ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "true", "kiosk_active", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311407, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.074] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""} [2026-06-17 13:00:54.106] [DEBUG] QUERY OK db=29.3ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:00:03Z", "sim_operator", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311408, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.106] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"} [2026-06-17 13:00:54.127] [DEBUG] QUERY OK db=20.8ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "UNKNOWN", "sim_number", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311409, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.127] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"} [2026-06-17 13:00:54.151] [DEBUG] QUERY OK db=22.2ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "UNKNOWN", "sim_iccid", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311410, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.151] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"} [2026-06-17 13:00:54.175] [DEBUG] QUERY OK db=22.9ms queue=0.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "UNKNOWN", "sim_imsi", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311411, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.175] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"} [2026-06-17 13:00:54.210] [DEBUG] QUERY OK db=34.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "UNKNOWN", "sim_iccid2", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311412, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.210] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:03Z", "value" => "UNKNOWN"} [2026-06-17 13:00:54.224] [DEBUG] QUERY OK db=12.9ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "UNKNOWN", "sim_imsi2", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311413, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.224] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:03Z", "value" => "19"} [2026-06-17 13:00:54.242] [DEBUG] QUERY OK db=17.7ms idle=14.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "19", "data_usage_mb", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311414, itemkey: "data_usage_mb", value: "19", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.242] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:03Z", "value" => "0"} [2026-06-17 13:00:54.265] [DEBUG] QUERY OK db=22.5ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "0", "mobile_data_mb", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.265] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311415, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.266] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 13:00:54.341] [DEBUG] QUERY OK db=74.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:03Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39593, ~N[2026-06-17 13:00:54], ~N[2026-06-17 13:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:54.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311416, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T13:00:03Z", message: nil, status_log_id: 39593, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:54], updated_at: ~N[2026-06-17 13:00:54]}} [2026-06-17 13:00:54.343] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T13:00:03Z"} [2026-06-17 13:00:54.346] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=63.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:00:54.351] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:00:54.351] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:00:03Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 4, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{"phoenix_client_shamanth" => true}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:00:59.289] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:00:59.289] [INFO ] Incoming JSON payload: {"oid":"95cfeae7-c776-4531-9d07-422d6781dcdc","sn":"98251226730002","uploadTime":"2026-06-17T13:00:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"ram_free_mb","value":"766","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"data_usage_mb","value":"19","timestamp":"2026-06-17T13:00:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:00:09Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 13:00:59.292] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "95cfeae7-c776-4531-9d07-422d6781dcdc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:09Z", "value" => "766"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:09Z", "value" => "19"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:09Z", "vendor" => "morefun"} [2026-06-17 13:00:59.292] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:00:59.292] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:00:59.292] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 13:00:59.294] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=1000.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-06-17 13:00:59.295] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=0.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-06-17 13:00:59.295] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:00:59.297] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=0.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:00:59.297] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:00:59.327] [DEBUG] QUERY OK source="tms_terminals" db=29.7ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:00:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:00:59.327] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:00:59.328] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:00:59.346] [DEBUG] QUERY OK source="tms_terminals" db=17.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:00:59], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:00:59.387] [DEBUG] QUERY OK db=40.1ms queue=0.2ms idle=18.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "95cfeae7-c776-4531-9d07-422d6781dcdc", "2026-06-17T13:00:09Z", ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:00:59.388] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39595, oid: "95cfeae7-c776-4531-9d07-422d6781dcdc", upload_time: "2026-06-17T13:00:09Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]} [2026-06-17 13:00:59.388] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:09Z", "value" => "morefun"} [2026-06-17 13:00:59.414] [DEBUG] QUERY OK db=23.1ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "morefun", "vendor", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311433, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.414] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:09Z", "value" => "kiosk_launcher"} [2026-06-17 13:00:59.458] [DEBUG] QUERY OK db=39.0ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "kiosk_launcher", "model", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311434, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.459] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:09Z", "value" => "1.0"} [2026-06-17 13:00:59.486] [DEBUG] QUERY OK db=27.0ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "1.0", "app_version", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311435, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.486] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:09Z", "value" => "13"} [2026-06-17 13:00:59.512] [DEBUG] QUERY OK db=25.1ms queue=0.1ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "13", "android_version", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311436, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.512] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:09Z", "value" => "766"} [2026-06-17 13:00:59.557] [DEBUG] QUERY OK db=44.4ms queue=0.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "766", "ram_free_mb", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311437, itemkey: "ram_free_mb", value: "766", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.558] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:09Z", "value" => "WIFI"} [2026-06-17 13:00:59.573] [DEBUG] QUERY OK db=14.4ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "WIFI", "network_type", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311438, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.573] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:09Z", "value" => "true"} [2026-06-17 13:00:59.585] [DEBUG] QUERY OK db=11.2ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "true", "kiosk_active", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311439, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.585] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:09Z", "value" => ""} [2026-06-17 13:00:59.621] [DEBUG] QUERY OK db=34.6ms queue=1.0ms idle=12.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:00:09Z", "sim_operator", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311440, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.623] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"} [2026-06-17 13:00:59.654] [DEBUG] QUERY OK db=30.5ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "UNKNOWN", "sim_number", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311441, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.655] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"} [2026-06-17 13:00:59.666] [DEBUG] QUERY OK db=10.6ms queue=0.2ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "UNKNOWN", "sim_iccid", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311442, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.666] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"} [2026-06-17 13:00:59.678] [DEBUG] QUERY OK db=10.9ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "UNKNOWN", "sim_imsi", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311443, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.678] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"} [2026-06-17 13:00:59.721] [DEBUG] QUERY OK db=43.1ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "UNKNOWN", "sim_iccid2", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311444, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.722] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:09Z", "value" => "UNKNOWN"} [2026-06-17 13:00:59.737] [DEBUG] QUERY OK db=14.1ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "UNKNOWN", "sim_imsi2", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311445, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.737] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:09Z", "value" => "19"} [2026-06-17 13:00:59.766] [DEBUG] QUERY OK db=28.2ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "19", "data_usage_mb", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311447, itemkey: "data_usage_mb", value: "19", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.766] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:09Z", "value" => "0"} [2026-06-17 13:00:59.799] [DEBUG] QUERY OK db=32.3ms queue=0.1ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "0", "mobile_data_mb", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311449, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.800] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 13:00:59.818] [DEBUG] QUERY OK db=17.0ms queue=0.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:09Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39595, ~N[2026-06-17 13:00:59], ~N[2026-06-17 13:00:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:00:59.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311451, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T13:00:09Z", message: nil, status_log_id: 39595, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:00:59], updated_at: ~N[2026-06-17 13:00:59]}} [2026-06-17 13:00:59.820] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=20.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:00:59.824] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:01:05.375] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:01:05.375] [INFO ] Incoming JSON payload: {"oid":"2fc25f27-5e28-464d-aecf-8619c7303c7c","sn":"98251226730002","uploadTime":"2026-06-17T13:00:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"ram_free_mb","value":"756","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"data_usage_mb","value":"19","timestamp":"2026-06-17T13:00:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:00:15Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 13:01:05.378] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2fc25f27-5e28-464d-aecf-8619c7303c7c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:15Z", "value" => "756"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:15Z", "value" => "19"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:15Z", "vendor" => "morefun"} [2026-06-17 13:01:05.381] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:01:05.381] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:01:05.382] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 13:01:05.384] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=1066.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-06-17 13:01:05.386] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=63.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-06-17 13:01:05.386] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:01:05.389] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:01:05.389] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:01:05.437] [DEBUG] QUERY OK source="tms_terminals" db=5.2ms queue=41.7ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:01:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:01:05.437] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:01:05.438] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=48.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:01:05.464] [DEBUG] QUERY OK source="tms_terminals" db=25.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:01:05], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:01:05.500] [DEBUG] QUERY OK db=35.2ms queue=0.7ms idle=25.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "2fc25f27-5e28-464d-aecf-8619c7303c7c", "2026-06-17T13:00:15Z", ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:01:05.501] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39599, oid: "2fc25f27-5e28-464d-aecf-8619c7303c7c", upload_time: "2026-06-17T13:00:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]} [2026-06-17 13:01:05.501] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:15Z", "value" => "morefun"} [2026-06-17 13:01:05.521] [DEBUG] QUERY OK db=19.5ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "morefun", "vendor", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311476, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.521] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:15Z", "value" => "kiosk_launcher"} [2026-06-17 13:01:05.544] [DEBUG] QUERY OK db=22.3ms idle=21.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "kiosk_launcher", "model", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311478, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.544] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:15Z", "value" => "1.0"} [2026-06-17 13:01:05.588] [DEBUG] QUERY OK db=42.2ms queue=0.4ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "1.0", "app_version", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311480, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.588] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:15Z", "value" => "13"} [2026-06-17 13:01:05.604] [DEBUG] QUERY OK db=15.1ms queue=0.1ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "13", "android_version", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311482, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.605] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:15Z", "value" => "756"} [2026-06-17 13:01:05.628] [DEBUG] QUERY OK db=22.7ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "756", "ram_free_mb", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311484, itemkey: "ram_free_mb", value: "756", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.628] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:15Z", "value" => "WIFI"} [2026-06-17 13:01:05.662] [DEBUG] QUERY OK db=32.4ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "WIFI", "network_type", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311486, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.662] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:15Z", "value" => "true"} [2026-06-17 13:01:05.691] [DEBUG] QUERY OK db=28.6ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "true", "kiosk_active", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311488, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.692] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:15Z", "value" => ""} [2026-06-17 13:01:05.710] [DEBUG] QUERY OK db=16.8ms queue=0.6ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:00:15Z", "sim_operator", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311490, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.711] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"} [2026-06-17 13:01:05.740] [DEBUG] QUERY OK db=28.3ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "UNKNOWN", "sim_number", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311492, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.740] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"} [2026-06-17 13:01:05.779] [DEBUG] QUERY OK db=38.4ms queue=0.5ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "UNKNOWN", "sim_iccid", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311494, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.780] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"} [2026-06-17 13:01:05.793] [DEBUG] QUERY OK db=11.9ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "UNKNOWN", "sim_imsi", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311496, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.793] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"} [2026-06-17 13:01:05.825] [DEBUG] QUERY OK db=31.6ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "UNKNOWN", "sim_iccid2", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311498, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.826] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:15Z", "value" => "UNKNOWN"} [2026-06-17 13:01:05.858] [DEBUG] QUERY OK db=31.3ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "UNKNOWN", "sim_imsi2", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311500, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.858] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:15Z", "value" => "19"} [2026-06-17 13:01:05.882] [DEBUG] QUERY OK db=23.8ms queue=0.1ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "19", "data_usage_mb", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311502, itemkey: "data_usage_mb", value: "19", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.884] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:15Z", "value" => "0"} [2026-06-17 13:01:05.912] [DEBUG] QUERY OK db=27.1ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "0", "mobile_data_mb", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311504, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.914] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 13:01:05.948] [DEBUG] QUERY OK db=32.3ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39599, ~N[2026-06-17 13:01:05], ~N[2026-06-17 13:01:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:05.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311506, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T13:00:15Z", message: nil, status_log_id: 39599, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:05], updated_at: ~N[2026-06-17 13:01:05]}} [2026-06-17 13:01:05.952] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:01:05.968] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:01:11.414] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:01:11.415] [INFO ] Incoming JSON payload: {"oid":"d426a5a0-391e-4513-bd91-2b48cd8f3c62","sn":"98251226730002","uploadTime":"2026-06-17T13:00:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"ram_free_mb","value":"768","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"data_usage_mb","value":"19","timestamp":"2026-06-17T13:00:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:00:21Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 13:01:11.419] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d426a5a0-391e-4513-bd91-2b48cd8f3c62", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:21Z", "value" => "768"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:21Z", "value" => "19"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:21Z", "vendor" => "morefun"} [2026-06-17 13:01:11.419] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:01:11.420] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:01:11.420] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 13:01:11.421] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=327.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-06-17 13:01:11.422] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=83.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-06-17 13:01:11.422] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:01:11.423] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:01:11.424] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:01:11.444] [DEBUG] QUERY OK source="tms_terminals" db=19.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:01:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:01:11.444] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:01:11.445] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=20.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:01:11.467] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms queue=0.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:01:11], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:01:11.479] [DEBUG] QUERY OK db=11.0ms queue=0.1ms idle=22.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d426a5a0-391e-4513-bd91-2b48cd8f3c62", "2026-06-17T13:00:21Z", ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:01:11.480] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39600, oid: "d426a5a0-391e-4513-bd91-2b48cd8f3c62", upload_time: "2026-06-17T13:00:21Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]} [2026-06-17 13:01:11.480] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:21Z", "value" => "morefun"} [2026-06-17 13:01:11.506] [DEBUG] QUERY OK db=25.1ms queue=0.1ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "morefun", "vendor", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311507, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.506] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:21Z", "value" => "kiosk_launcher"} [2026-06-17 13:01:11.536] [DEBUG] QUERY OK db=29.8ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "kiosk_launcher", "model", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311509, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.537] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:21Z", "value" => "1.0"} [2026-06-17 13:01:11.560] [DEBUG] QUERY OK db=23.2ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "1.0", "app_version", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311511, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.561] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:21Z", "value" => "13"} [2026-06-17 13:01:11.591] [DEBUG] QUERY OK db=29.7ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "13", "android_version", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311513, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.591] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:21Z", "value" => "768"} [2026-06-17 13:01:11.630] [DEBUG] QUERY OK db=38.4ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "768", "ram_free_mb", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311515, itemkey: "ram_free_mb", value: "768", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.631] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:21Z", "value" => "WIFI"} [2026-06-17 13:01:11.651] [DEBUG] QUERY OK db=20.2ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "WIFI", "network_type", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311517, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.652] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:21Z", "value" => "true"} [2026-06-17 13:01:11.665] [DEBUG] QUERY OK db=13.0ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "true", "kiosk_active", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311519, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.666] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:21Z", "value" => ""} [2026-06-17 13:01:11.695] [DEBUG] QUERY OK db=28.2ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:00:21Z", "sim_operator", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311521, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.696] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"} [2026-06-17 13:01:11.728] [DEBUG] QUERY OK db=31.9ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "UNKNOWN", "sim_number", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311523, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.729] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"} [2026-06-17 13:01:11.748] [DEBUG] QUERY OK db=19.0ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "UNKNOWN", "sim_iccid", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311525, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.749] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"} [2026-06-17 13:01:11.775] [DEBUG] QUERY OK db=25.1ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "UNKNOWN", "sim_imsi", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311527, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.775] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"} [2026-06-17 13:01:11.813] [DEBUG] QUERY OK db=37.7ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "UNKNOWN", "sim_iccid2", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311529, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.814] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:21Z", "value" => "UNKNOWN"} [2026-06-17 13:01:11.832] [DEBUG] QUERY OK db=17.6ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "UNKNOWN", "sim_imsi2", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311531, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.833] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:21Z", "value" => "19"} [2026-06-17 13:01:11.852] [DEBUG] QUERY OK db=18.2ms queue=0.1ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "19", "data_usage_mb", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311533, itemkey: "data_usage_mb", value: "19", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.852] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:21Z", "value" => "0"} [2026-06-17 13:01:11.881] [DEBUG] QUERY OK db=28.2ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "0", "mobile_data_mb", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311535, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.882] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 13:01:11.925] [DEBUG] QUERY OK db=41.1ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:21Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39600, ~N[2026-06-17 13:01:11], ~N[2026-06-17 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:11.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311537, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T13:00:21Z", message: nil, status_log_id: 39600, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:11], updated_at: ~N[2026-06-17 13:01:11]}} [2026-06-17 13:01:11.929] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=45.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:01:11.945] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:01:13.221] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T13:00:03Z"} [2026-06-17 13:01:13.221] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:00:03Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 5, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:01:13.914] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:01:13.914] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T13:00:03Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T13:00:03Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T13:00:03Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T13:00:03Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T13:00:03Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T13:00:03Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T13:00:03Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T13:00:03Z","value":""},{"itemkey":"latitude","message":"Device Latitude","timestamp":"2026-06-17T13:00:03Z","value":"12.9715987"},{"itemkey":"longitude","message":"Device Longitude","timestamp":"2026-06-17T13:00:03Z","value":"77.5945627"}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T13:00:03Z","vendor":"MoreFun"} [2026-06-17 13:01:13.915] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:00:03Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:00:03Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:00:03Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:00:03Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""}, %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:00:03Z", "value" => "12.9715987"}, %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:00:03Z", "value" => "77.5945627"}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:03Z", "vendor" => "MoreFun"} [2026-06-17 13:01:13.918] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 13:01:13.918] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:01:13.919] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 13:01:13.920] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=825.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-06-17 13:01:13.922] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=578.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:01:13.925] [DEBUG] QUERY OK source="parameter_template_values" db=2.6ms idle=2.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-06-17 13:01:13.931] [DEBUG] QUERY OK source="parameter_definitions" db=2.3ms queue=0.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-06-17 13:01:13.935] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms idle=8.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:01:13.974] [DEBUG] QUERY OK source="pos_merchant" db=38.9ms idle=3.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:01:13.977] [DEBUG] QUERY OK db=1.1ms queue=1.4ms idle=1884.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 ["372916040000000"] [2026-06-17 13:01:13.977] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:01:13.979] [DEBUG] QUERY OK source="pos_terminal_data" db=2.2ms idle=42.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:01:13.981] [DEBUG] QUERY OK source="address" db=1.7ms idle=5.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:01:13.982] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 13:01:13.987] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 13:01:14.011] [DEBUG] QUERY OK db=21.3ms queue=1.0ms idle=8.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5068bdaea7e67f0e3e14dc9d0b8be420234d24eb2373fe16a335a3666eea1192", 4322, 940, ~U[2026-06-17 13:01:13Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:01:13], ~N[2026-06-17 13:01:13]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:01:14.011] [INFO ] AutoPushService: Created push log 29769 for MF919 params.zip [2026-06-17 13:01:14.011] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 4322, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:01:14.012] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:01:14.012] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 13:01:14.014] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=30.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-06-17 13:01:14.018] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:01:14.029] [DEBUG] QUERY OK db=10.7ms queue=0.3ms idle=7.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d9c76b6b296fe0c6395fa5833e3c9702ced391a826d4184eb5caf0639d01b064", 2883, 17947, ~U[2026-06-17 13:01:14Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:01:14.030] [INFO ] AutoPushService: Created push log 29770 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:01:14.030] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2883, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:01:14.030] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:01:14.030] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 13:01:14.031] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=16.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-06-17 13:01:14.031] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 13:01:14.032] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:01:14.032] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:01:14.034] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:01:14.034] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:01:14.034] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:01:14.035] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=3.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-06-17 13:01:14.035] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:01:14.036] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 13:01:14.037] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:01:14.101] [DEBUG] QUERY OK source="tms_terminals" db=22.4ms queue=41.2ms idle=1.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 13:01:14], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 13:01:14.101] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:01:14.101] [INFO ] Event published: terminal_updated [2026-06-17 13:01:14.101] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 13:01:14.101] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 13:01:14.101] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 13:01:14.102] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=64.6ms 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-06-17 13:01:14], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 13:01:14.104] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.1ms 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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 13:01:14.106] [DEBUG] QUERY OK source="terminal_group_rules" db=0.8ms queue=0.1ms idle=0.7ms 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-06-17 13:01:14.106] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 13:01:14.144] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=40.9ms idle=0.6ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", ~N[2026-06-17 13:01:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:01:14.144] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:01:14.145] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=38.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:01:14.187] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=40.9ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:01:14], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:01:14.218] [DEBUG] QUERY OK db=29.8ms idle=42.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T13:00:03Z", ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:01:14.218] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39603, oid: "organization_id", upload_time: "2026-06-17T13:00:03Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]} [2026-06-17 13:01:14.218] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:00:03Z", "value" => "online"} [2026-06-17 13:01:14.243] [DEBUG] QUERY OK db=24.4ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T13:00:03Z", "online", "status", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311540, itemkey: "status", value: "online", timestamp: "2026-06-17T13:00:03Z", message: "Terminal status update", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.243] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 13:01:14.244] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:00:03Z", "value" => "24"} [2026-06-17 13:01:14.244] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:01:14.272] [DEBUG] QUERY OK db=27.5ms queue=0.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T13:00:03Z", "24", "battery", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311542, itemkey: "battery", value: "24", timestamp: "2026-06-17T13:00:03Z", message: "Battery level", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.273] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:00:03Z", "value" => "online"} [2026-06-17 13:01:14.300] [DEBUG] QUERY OK db=26.4ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T13:00:03Z", "online", "network", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311544, itemkey: "network", value: "online", timestamp: "2026-06-17T13:00:03Z", message: "Network connectivity", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.300] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 13:01:14.300] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:01:14.300] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:00:03Z", "value" => "0"} [2026-06-17 13:01:14.330] [DEBUG] QUERY OK db=28.5ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T13:00:03Z", "0", "cpu", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311546, itemkey: "cpu", value: "0", timestamp: "2026-06-17T13:00:03Z", message: "CPU usage percentage", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.330] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""} [2026-06-17 13:01:14.401] [DEBUG] QUERY OK db=26.8ms queue=41.1ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T13:00:03Z", "parameter_config", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311548, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T13:00:03Z", message: "Current parameters version", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.403] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""} [2026-06-17 13:01:14.491] [DEBUG] QUERY OK db=45.7ms queue=41.1ms idle=60.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T13:00:03Z", "emv_config", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311551, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T13:00:03Z", message: "Current EMV config version", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.492] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""} [2026-06-17 13:01:14.509] [DEBUG] QUERY OK db=16.3ms queue=0.2ms idle=91.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T13:00:03Z", "keys_config", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311553, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T13:00:03Z", message: "Current keys config version", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.509] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:00:03Z", "value" => ""} [2026-06-17 13:01:14.554] [DEBUG] QUERY OK db=43.5ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T13:00:03Z", "application", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311555, itemkey: "application", value: nil, timestamp: "2026-06-17T13:00:03Z", message: "Current application version", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.557] [INFO ] Saving status item: %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:00:03Z", "value" => "12.9715987"} [2026-06-17 13:01:14.622] [DEBUG] QUERY OK db=65.2ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Latitude", "2026-06-17T13:00:03Z", "12.9715987", "latitude", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311557, itemkey: "latitude", value: "12.9715987", timestamp: "2026-06-17T13:00:03Z", message: "Device Latitude", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.624] [INFO ] Saving status item: %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:00:03Z", "value" => "77.5945627"} [2026-06-17 13:01:14.647] [DEBUG] QUERY OK db=22.5ms queue=0.1ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Longitude", "2026-06-17T13:00:03Z", "77.5945627", "longitude", 39603, ~N[2026-06-17 13:01:14], ~N[2026-06-17 13:01:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:14.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311558, itemkey: "longitude", value: "77.5945627", timestamp: "2026-06-17T13:00:03Z", message: "Device Longitude", status_log_id: 39603, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:14], updated_at: ~N[2026-06-17 13:01:14]}} [2026-06-17 13:01:14.648] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T13:00:24Z"} [2026-06-17 13:01:14.649] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:00:24Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:01:14.652] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms queue=0.1ms idle=26.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:01:14.663] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:01:17.768] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:01:17.768] [INFO ] Incoming JSON payload: {"oid":"3f47df38-df96-45fb-b220-21e95e6dd2ae","sn":"98251226730002","uploadTime":"2026-06-17T13:00:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"ram_free_mb","value":"769","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"data_usage_mb","value":"19","timestamp":"2026-06-17T13:00:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:00:27Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 13:01:17.769] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3f47df38-df96-45fb-b220-21e95e6dd2ae", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:27Z", "value" => "769"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:27Z", "value" => "19"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:27Z", "vendor" => "morefun"} [2026-06-17 13:01:17.769] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:01:17.769] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:01:17.769] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 13:01:17.770] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=1421.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 13:01:17.771] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.4ms idle=420.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-06-17 13:01:17.772] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:01:17.772] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:01:17.814] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=40.6ms idle=1.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 13:01:17], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 13:01:17.814] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:01:17.815] [INFO ] Event published: terminal_updated [2026-06-17 13:01:17.815] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 13:01:17.815] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 13:01:17.815] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 13:01:17.816] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=43.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-06-17 13:01:17], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 13:01:17.817] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.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.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 13:01:17.818] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms queue=0.1ms 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-06-17 13:01:17.818] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 13:01:17.858] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=40.9ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", ~N[2026-06-17 13:01:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:01:17.858] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:01:17.859] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=40.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:01:17.921] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms queue=41.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:01:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:01:17.952] [DEBUG] QUERY OK db=31.3ms idle=62.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3f47df38-df96-45fb-b220-21e95e6dd2ae", "2026-06-17T13:00:27Z", ~N[2026-06-17 13:01:17], ~N[2026-06-17 13:01:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:01:17.953] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39605, oid: "3f47df38-df96-45fb-b220-21e95e6dd2ae", upload_time: "2026-06-17T13:00:27Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:17], updated_at: ~N[2026-06-17 13:01:17]} [2026-06-17 13:01:17.953] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:27Z", "value" => "morefun"} [2026-06-17 13:01:18.017] [DEBUG] QUERY OK db=21.0ms queue=40.8ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "morefun", "vendor", 39605, ~N[2026-06-17 13:01:17], ~N[2026-06-17 13:01:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311560, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:17], updated_at: ~N[2026-06-17 13:01:17]}} [2026-06-17 13:01:18.018] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:27Z", "value" => "kiosk_launcher"} [2026-06-17 13:01:18.086] [DEBUG] QUERY OK db=24.9ms queue=41.8ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "kiosk_launcher", "model", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311562, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.087] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:27Z", "value" => "1.0"} [2026-06-17 13:01:18.102] [DEBUG] QUERY OK db=14.8ms idle=71.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "1.0", "app_version", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311564, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.103] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:27Z", "value" => "13"} [2026-06-17 13:01:18.136] [DEBUG] QUERY OK db=32.8ms queue=0.2ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "13", "android_version", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311566, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.136] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:27Z", "value" => "769"} [2026-06-17 13:01:18.168] [DEBUG] QUERY OK db=31.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "769", "ram_free_mb", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311568, itemkey: "ram_free_mb", value: "769", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.169] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:27Z", "value" => "WIFI"} [2026-06-17 13:01:18.186] [DEBUG] QUERY OK db=17.3ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "WIFI", "network_type", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311570, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.187] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:27Z", "value" => "true"} [2026-06-17 13:01:18.242] [DEBUG] QUERY OK db=55.4ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "true", "kiosk_active", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311572, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.243] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:27Z", "value" => ""} [2026-06-17 13:01:18.276] [DEBUG] QUERY OK db=31.9ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:00:27Z", "sim_operator", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311574, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.276] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"} [2026-06-17 13:01:18.309] [DEBUG] QUERY OK db=32.8ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "UNKNOWN", "sim_number", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311576, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.310] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"} [2026-06-17 13:01:18.330] [DEBUG] QUERY OK db=20.2ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "UNKNOWN", "sim_iccid", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311578, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.330] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"} [2026-06-17 13:01:18.357] [DEBUG] QUERY OK db=25.8ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "UNKNOWN", "sim_imsi", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311580, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.357] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"} [2026-06-17 13:01:18.398] [DEBUG] QUERY OK db=40.3ms idle=3.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "UNKNOWN", "sim_iccid2", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311582, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.398] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:27Z", "value" => "UNKNOWN"} [2026-06-17 13:01:18.414] [DEBUG] QUERY OK db=14.8ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "UNKNOWN", "sim_imsi2", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311584, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.414] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:27Z", "value" => "19"} [2026-06-17 13:01:18.465] [DEBUG] QUERY OK db=50.7ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "19", "data_usage_mb", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311586, itemkey: "data_usage_mb", value: "19", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.466] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:27Z", "value" => "0"} [2026-06-17 13:01:18.489] [DEBUG] QUERY OK db=22.8ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "0", "mobile_data_mb", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311588, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.490] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 13:01:18.546] [DEBUG] QUERY OK db=55.4ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:27Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39605, ~N[2026-06-17 13:01:18], ~N[2026-06-17 13:01:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:18.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311590, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T13:00:27Z", message: nil, status_log_id: 39605, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:18], updated_at: ~N[2026-06-17 13:01:18]}} [2026-06-17 13:01:18.549] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:01:18.553] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:01:20.346] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:01:20.346] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T13:00:30Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T13:00:30Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T13:00:30Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T13:00:30Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T13:00:30Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T13:00:30Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T13:00:30Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T13:00:30Z","value":""},{"itemkey":"latitude","message":"Device Latitude","timestamp":"2026-06-17T13:00:30Z","value":"13.024761666666667"},{"itemkey":"longitude","message":"Device Longitude","timestamp":"2026-06-17T13:00:30Z","value":"77.63998833333333"}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T13:00:30Z","vendor":"MoreFun"} [2026-06-17 13:01:20.347] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:00:30Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:00:30Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:00:30Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:00:30Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:00:30Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:00:30Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:00:30Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:00:30Z", "value" => ""}, %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:00:30Z", "value" => "13.024761666666667"}, %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:00:30Z", "value" => "77.63998833333333"}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:30Z", "vendor" => "MoreFun"} [2026-06-17 13:01:20.347] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:01:20.347] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:01:20.347] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 13:01:20.348] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=990.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 13:01:20.349] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=255.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:01:20.350] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms idle=0.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-06-17 13:01:20.353] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=1.5ms 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-06-17 13:01:20.356] [DEBUG] QUERY OK source="pos_terminal" db=2.7ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:01:20.394] [DEBUG] QUERY OK source="pos_merchant" db=37.4ms idle=3.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:01:20.396] [DEBUG] QUERY OK db=0.7ms queue=1.3ms idle=1303.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 ["372916040000000"] [2026-06-17 13:01:20.396] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:01:20.397] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=37.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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:01:20.398] [DEBUG] QUERY OK source="address" db=0.4ms idle=3.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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:01:20.398] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 13:01:20.400] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 13:01:20.424] [DEBUG] QUERY OK db=21.5ms idle=4.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "f01a9cc044d95fe39d7c248114a72a161252206ef8417d26c1def0a2e4bf820a", 4418, 940, ~U[2026-06-17 13:01:20Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:01:20.424] [INFO ] AutoPushService: Created push log 29771 for MF919 params.zip [2026-06-17 13:01:20.424] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 4418, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:01:20.424] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:01:20.424] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 13:01:20.426] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=26.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-06-17 13:01:20.429] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:01:20.445] [DEBUG] QUERY OK db=15.3ms idle=6.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c9e38f8fe68b1778e4f25d17018edd2a9663fae06f3dc2320c88203d910d3223", 3043, 17947, ~U[2026-06-17 13:01:20Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:01:20.445] [INFO ] AutoPushService: Created push log 29772 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:01:20.446] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3043, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:01:20.446] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:01:20.446] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 13:01:20.448] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=20.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-06-17 13:01:20.448] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 13:01:20.450] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:01:20.450] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:01:20.452] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:01:20.453] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:01:20.453] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:01:20.454] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=5.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-06-17 13:01:20.454] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:01:20.454] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 13:01:20.455] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:01:20.498] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=40.8ms idle=2.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-06-17 13:01:20], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 13:01:20.498] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:01:20.498] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 13:01:20.498] [INFO ] Event published: terminal_updated [2026-06-17 13:01:20.498] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 13:01:20.499] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 13:01:20.499] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=43.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-06-17 13:01:20], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 13:01:20.500] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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 WHERE (t0.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 13:01:20.501] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms 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-06-17 13:01:20.501] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 13:01:20.542] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=41.6ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "1.0.1", "1.0.0", ~N[2026-06-17 13:01:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:01:20.543] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.7ms idle=40.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` = ?)) 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-06-17 13:01:20.544] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 13:01:20.544] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:01:20.545] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:01:20.590] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms queue=41.1ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:01:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:01:20.602] [DEBUG] QUERY OK db=11.3ms idle=45.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T13:00:30Z", ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:01:20.602] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39607, oid: "organization_id", upload_time: "2026-06-17T13:00:30Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]} [2026-06-17 13:01:20.603] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:00:30Z", "value" => "online"} [2026-06-17 13:01:20.622] [DEBUG] QUERY OK db=18.9ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T13:00:30Z", "online", "status", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311607, itemkey: "status", value: "online", timestamp: "2026-06-17T13:00:30Z", message: "Terminal status update", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.622] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 13:01:20.623] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:01:20.623] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:00:30Z", "value" => "24"} [2026-06-17 13:01:20.649] [DEBUG] QUERY OK db=25.4ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T13:00:30Z", "24", "battery", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311609, itemkey: "battery", value: "24", timestamp: "2026-06-17T13:00:30Z", message: "Battery level", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.649] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:00:30Z", "value" => "online"} [2026-06-17 13:01:20.683] [DEBUG] QUERY OK db=33.6ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T13:00:30Z", "online", "network", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311611, itemkey: "network", value: "online", timestamp: "2026-06-17T13:00:30Z", message: "Network connectivity", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.684] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 13:01:20.685] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:00:30Z", "value" => "0"} [2026-06-17 13:01:20.685] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:01:20.701] [DEBUG] QUERY OK db=15.7ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T13:00:30Z", "0", "cpu", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311613, itemkey: "cpu", value: "0", timestamp: "2026-06-17T13:00:30Z", message: "CPU usage percentage", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.701] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:00:30Z", "value" => "1.0.0"} [2026-06-17 13:01:20.735] [DEBUG] QUERY OK db=33.9ms idle=18.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T13:00:30Z", "1.0.0", "parameter_config", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311615, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T13:00:30Z", message: "Current parameters version", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.736] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:00:30Z", "value" => "1.0.1"} [2026-06-17 13:01:20.764] [DEBUG] QUERY OK db=27.6ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T13:00:30Z", "1.0.1", "emv_config", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311617, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T13:00:30Z", message: "Current EMV config version", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.764] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:00:30Z", "value" => ""} [2026-06-17 13:01:20.829] [DEBUG] QUERY OK db=21.8ms queue=42.4ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T13:00:30Z", "keys_config", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311619, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T13:00:30Z", message: "Current keys config version", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.830] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:00:30Z", "value" => ""} [2026-06-17 13:01:20.883] [DEBUG] QUERY OK db=11.4ms queue=40.8ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T13:00:30Z", "application", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311621, itemkey: "application", value: nil, timestamp: "2026-06-17T13:00:30Z", message: "Current application version", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.884] [INFO ] Saving status item: %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:00:30Z", "value" => "13.024761666666667"} [2026-06-17 13:01:20.901] [DEBUG] QUERY OK db=16.2ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Latitude", "2026-06-17T13:00:30Z", "13.024761666666667", "latitude", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311623, itemkey: "latitude", value: "13.024761666666667", timestamp: "2026-06-17T13:00:30Z", message: "Device Latitude", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.902] [INFO ] Saving status item: %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:00:30Z", "value" => "77.63998833333333"} [2026-06-17 13:01:20.943] [DEBUG] QUERY OK db=41.0ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Longitude", "2026-06-17T13:00:30Z", "77.63998833333333", "longitude", 39607, ~N[2026-06-17 13:01:20], ~N[2026-06-17 13:01:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:20.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311625, itemkey: "longitude", value: "77.63998833333333", timestamp: "2026-06-17T13:00:30Z", message: "Device Longitude", status_log_id: 39607, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:20], updated_at: ~N[2026-06-17 13:01:20]}} [2026-06-17 13:01:20.943] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T13:00:30Z"} [2026-06-17 13:01:20.943] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:00:30Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 14, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:01:20.946] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=42.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:01:20.950] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:01:21.222] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T13:00:30Z"} [2026-06-17 13:01:21.222] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:00:30Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 16, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:01:23.832] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:01:23.832] [INFO ] Incoming JSON payload: {"oid":"f9eb19b2-d182-4ff6-8f29-65f0c8419bbc","sn":"98251226730002","uploadTime":"2026-06-17T13:00:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"ram_free_mb","value":"762","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"data_usage_mb","value":"19","timestamp":"2026-06-17T13:00:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:00:33Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 13:01:23.836] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f9eb19b2-d182-4ff6-8f29-65f0c8419bbc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:33Z", "value" => "762"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:33Z", "value" => "19"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:00:33Z", "vendor" => "morefun"} [2026-06-17 13:01:23.836] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:01:23.837] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:01:23.837] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 13:01:23.838] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=471.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-06-17 13:01:23.839] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=277.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-06-17 13:01:23.839] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:01:23.840] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:01:23.868] [DEBUG] QUERY OK source="tms_terminals" db=27.6ms idle=1.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 13:01:23], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 13:01:23.868] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:01:23.869] [INFO ] Event published: terminal_updated [2026-06-17 13:01:23.869] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 13:01:23.869] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=28.8ms 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-06-17 13:01:23], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 13:01:23.870] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 13:01:23.870] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 13:01:23.871] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 13:01:23.871] [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-06-17 13:01:23.871] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 13:01:23.924] [DEBUG] QUERY OK source="tms_terminals" db=12.6ms queue=40.5ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 13:01:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:01:23.926] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:01:23.927] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=54.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:01:23.999] [DEBUG] QUERY OK source="tms_terminals" db=27.6ms queue=44.5ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:01:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:01:24.032] [DEBUG] QUERY OK db=32.1ms idle=73.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f9eb19b2-d182-4ff6-8f29-65f0c8419bbc", "2026-06-17T13:00:33Z", ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:01:24.033] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39609, oid: "f9eb19b2-d182-4ff6-8f29-65f0c8419bbc", upload_time: "2026-06-17T13:00:33Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]} [2026-06-17 13:01:24.033] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:00:33Z", "value" => "morefun"} [2026-06-17 13:01:24.097] [DEBUG] QUERY OK db=18.3ms queue=45.5ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "morefun", "vendor", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311628, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.099] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:00:33Z", "value" => "kiosk_launcher"} [2026-06-17 13:01:24.164] [DEBUG] QUERY OK db=24.2ms queue=40.5ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "kiosk_launcher", "model", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311630, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.164] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:00:33Z", "value" => "1.0"} [2026-06-17 13:01:24.182] [DEBUG] QUERY OK db=16.9ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "1.0", "app_version", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311632, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.182] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:00:33Z", "value" => "13"} [2026-06-17 13:01:24.204] [DEBUG] QUERY OK db=20.9ms queue=0.1ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "13", "android_version", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311634, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.204] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:00:33Z", "value" => "762"} [2026-06-17 13:01:24.240] [DEBUG] QUERY OK db=35.6ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "762", "ram_free_mb", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311636, itemkey: "ram_free_mb", value: "762", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.241] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:00:33Z", "value" => "WIFI"} [2026-06-17 13:01:24.262] [DEBUG] QUERY OK db=19.9ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "WIFI", "network_type", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311638, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.262] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:00:33Z", "value" => "true"} [2026-06-17 13:01:24.278] [DEBUG] QUERY OK db=15.3ms queue=0.5ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "true", "kiosk_active", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311640, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.279] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:00:33Z", "value" => ""} [2026-06-17 13:01:24.308] [DEBUG] QUERY OK db=29.0ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:00:33Z", "sim_operator", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311642, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.309] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"} [2026-06-17 13:01:24.350] [DEBUG] QUERY OK db=40.6ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "UNKNOWN", "sim_number", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311644, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.351] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"} [2026-06-17 13:01:24.384] [DEBUG] QUERY OK db=32.2ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "UNKNOWN", "sim_iccid", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311646, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.384] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"} [2026-06-17 13:01:24.423] [DEBUG] QUERY OK db=38.2ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "UNKNOWN", "sim_imsi", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311648, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.424] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"} [2026-06-17 13:01:24.443] [DEBUG] QUERY OK db=19.2ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "UNKNOWN", "sim_iccid2", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311650, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.444] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:00:33Z", "value" => "UNKNOWN"} [2026-06-17 13:01:24.470] [DEBUG] QUERY OK db=24.2ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "UNKNOWN", "sim_imsi2", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311652, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.470] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:00:33Z", "value" => "19"} [2026-06-17 13:01:24.502] [DEBUG] QUERY OK db=31.7ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "19", "data_usage_mb", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311654, itemkey: "data_usage_mb", value: "19", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.503] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:00:33Z", "value" => "0"} [2026-06-17 13:01:24.530] [DEBUG] QUERY OK db=26.9ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "0", "mobile_data_mb", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311656, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.532] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:00:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 13:01:24.562] [DEBUG] QUERY OK db=28.5ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:00:33Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39609, ~N[2026-06-17 13:01:24], ~N[2026-06-17 13:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:01:24.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 311658, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T13:00:33Z", message: nil, status_log_id: 39609, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:01:24], updated_at: ~N[2026-06-17 13:01:24]}} [2026-06-17 13:01:24.564] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=33.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:01:24.567] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:38:10.159] [INFO ] [Ysp.Scheduler] Started. SFTP in 13h 21m, MIS in 17h 21m [2026-06-17 13:38:10.190] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-06-17 13:38:10.199] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-06-17 13:38:11.482] [INFO ] Terminal Event Listener started and listening to events [2026-06-17 13:38:11.483] [INFO ] Rule Validation Worker started - will run every hour [2026-06-17 13:38:11.484] [INFO ] Building initial filter cache... [2026-06-17 13:38:11.491] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.5ms idle=1506.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-06-17 13:38:11.499] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=1.4ms idle=585.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-06-17 13:38:11.499] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 13:38:11.596] [INFO ] Device phoenix_client_shamanth connected [2026-06-17 13:38:11.613] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:4019 (http) [2026-06-17 13:38:11.624] [INFO ] Access PlatformWeb.Endpoint at http://localhost:4019 [2026-06-17 13:38:13.156] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 39µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "1", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 13:38:13.659] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 13:38:13.711] [DEBUG] QUERY OK source="users_tokens" db=1.0ms queue=1.2ms idle=262.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 13:38:13.688947Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 13:38:13.741] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.6ms idle=934.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 13:38:13.747] [DEBUG] QUERY OK source="app_packages" db=0.5ms queue=0.6ms idle=821.2ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 13:38:13.768] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.6ms idle=24.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 13:38:13.775] [DEBUG] QUERY OK source="terminal_groups" db=1.2ms queue=0.7ms idle=26.1ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 13:38:13.776] [DEBUG] Replied in 123ms [2026-06-17 13:38:13.785] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 13:38:13.786] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=17.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 13:38:13.787] [DEBUG] Replied in 1ms [2026-06-17 13:38:26.576] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 13:38:26.577] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T04:48:39Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T04:48:39Z","value":"58"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T04:48:39Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T04:48:39Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T04:48:39Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T04:48:39Z","value":""},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T04:48:39Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T04:48:39Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-17T04:48:39Z","vendor":"MoreFun"} [2026-06-17 13:38:26.578] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:48:39Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:48:39Z", "value" => "58"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:48:39Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:48:39Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:48:39Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:48:39Z", "value" => ""}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:48:39Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:48:39Z", "value" => ""}], "sn" => "98250623730001", "uploadTime" => "2026-06-17T04:48:39Z", "vendor" => "MoreFun"} [2026-06-17 13:38:26.578] [INFO ] Extracted versions for 98250623730001: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [2026-06-17 13:38:26.587] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 13:38:26.587] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 13:38:26.591] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.5ms idle=784.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-06-17 13:38:26.592] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.3ms idle=629.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:38:26.598] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=0.5ms idle=5.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-06-17 13:38:26.606] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=1.7ms idle=11.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-06-17 13:38:26.611] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.4ms idle=12.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:38:26.647] [DEBUG] QUERY OK source="pos_merchant" db=0.3ms queue=33.4ms idle=7.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:38:26.651] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=844.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 ["419926360000000"] [2026-06-17 13:38:26.651] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:38:26.656] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.4ms 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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:38:26.660] [DEBUG] QUERY OK source="address" db=0.5ms queue=1.2ms idle=10.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` = ?) [409] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:38:26.660] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 13:38:26.667] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 13:38:26.714] [DEBUG] QUERY OK db=30.8ms queue=0.6ms idle=23.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5ed83ca096e6b3f30eb5e04dc7aa3896f6cbb7f3c2f85de60f476f73075e7db4", 1411, 955, ~U[2026-06-17 13:38:26Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:38:26], ~N[2026-06-17 13:38:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:38:26.714] [INFO ] AutoPushService: Created push log 29774 for MF919 params.zip [2026-06-17 13:38:26.717] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1411, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:38:26.717] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:38:26.721] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 13:38:26.729] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=2.5ms idle=66.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-06-17 13:38:26.736] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:38:26.795] [DEBUG] QUERY OK db=57.9ms queue=0.5ms idle=25.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "955c126826206dd146f62fee76c889f75ed599bd1d4bf965de93d02428c4438f", 1603, 17947, ~U[2026-06-17 13:38:26Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:38:26], ~N[2026-06-17 13:38:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:38:26.795] [INFO ] AutoPushService: Created push log 29775 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:38:26.795] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1603, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:38:26.795] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:38:26.796] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 13:38:26.798] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms queue=0.1ms idle=67.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-06-17 13:38:26.802] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 13:38:26.804] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms idle=7.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:38:26.804] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:38:26.846] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:38:26.846] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:38:26.846] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:38:26.848] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.5ms idle=49.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-06-17 13:38:26.848] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:38:26.848] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 13:38:26.849] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=44.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:38:26.852] [INFO ] Terminal updated: 98250623730001 [2026-06-17 13:38:26.875] [DEBUG] QUERY OK source="tms_terminals" db=21.8ms queue=0.3ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:38:26], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:38:26.877] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 13:38:26.878] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=28.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:38:26.894] [DEBUG] QUERY OK source="tms_terminals" db=15.3ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:38:26], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:38:26.935] [DEBUG] QUERY OK db=35.5ms queue=0.4ms idle=21.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-17T04:48:39Z", ~N[2026-06-17 13:38:26], ~N[2026-06-17 13:38:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:38:26.940] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39744, oid: "organization_id", upload_time: "2026-06-17T04:48:39Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:26], updated_at: ~N[2026-06-17 13:38:26]} [2026-06-17 13:38:26.940] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:48:39Z", "value" => "online"} [2026-06-17 13:38:26.964] [DEBUG] QUERY OK db=22.3ms queue=0.6ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T04:48:39Z", "online", "status", 39744, ~N[2026-06-17 13:38:26], ~N[2026-06-17 13:38:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:26.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313582, itemkey: "status", value: "online", timestamp: "2026-06-17T04:48:39Z", message: "Terminal status update", status_log_id: 39744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:26], updated_at: ~N[2026-06-17 13:38:26]}} [2026-06-17 13:38:26.964] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 13:38:26.965] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:48:39Z", "value" => "58"} [2026-06-17 13:38:26.965] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:38:26.977] [DEBUG] QUERY OK db=12.1ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T04:48:39Z", "58", "battery", 39744, ~N[2026-06-17 13:38:26], ~N[2026-06-17 13:38:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:26.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313584, itemkey: "battery", value: "58", timestamp: "2026-06-17T04:48:39Z", message: "Battery level", status_log_id: 39744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:26], updated_at: ~N[2026-06-17 13:38:26]}} [2026-06-17 13:38:26.977] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:48:39Z", "value" => "online"} [2026-06-17 13:38:27.008] [DEBUG] QUERY OK db=29.6ms queue=0.3ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T04:48:39Z", "online", "network", 39744, ~N[2026-06-17 13:38:26], ~N[2026-06-17 13:38:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:27.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313585, itemkey: "network", value: "online", timestamp: "2026-06-17T04:48:39Z", message: "Network connectivity", status_log_id: 39744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:26], updated_at: ~N[2026-06-17 13:38:26]}} [2026-06-17 13:38:27.008] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 13:38:27.009] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:48:39Z", "value" => "0"} [2026-06-17 13:38:27.009] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:38:27.032] [DEBUG] QUERY OK db=22.5ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T04:48:39Z", "0", "cpu", 39744, ~N[2026-06-17 13:38:27], ~N[2026-06-17 13:38:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:27.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313586, itemkey: "cpu", value: "0", timestamp: "2026-06-17T04:48:39Z", message: "CPU usage percentage", status_log_id: 39744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:27], updated_at: ~N[2026-06-17 13:38:27]}} [2026-06-17 13:38:27.032] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:48:39Z", "value" => ""} [2026-06-17 13:38:27.051] [DEBUG] QUERY OK db=16.4ms queue=0.6ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-06-17T04:48:39Z", "parameter_config", 39744, ~N[2026-06-17 13:38:27], ~N[2026-06-17 13:38:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:27.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313587, itemkey: "parameter_config", value: nil, timestamp: "2026-06-17T04:48:39Z", message: "Current parameters version", status_log_id: 39744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:27], updated_at: ~N[2026-06-17 13:38:27]}} [2026-06-17 13:38:27.051] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:48:39Z", "value" => ""} [2026-06-17 13:38:27.064] [DEBUG] QUERY OK db=12.5ms queue=0.4ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T04:48:39Z", "emv_config", 39744, ~N[2026-06-17 13:38:27], ~N[2026-06-17 13:38:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:27.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313588, itemkey: "emv_config", value: nil, timestamp: "2026-06-17T04:48:39Z", message: "Current EMV config version", status_log_id: 39744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:27], updated_at: ~N[2026-06-17 13:38:27]}} [2026-06-17 13:38:27.065] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:48:39Z", "value" => ""} [2026-06-17 13:38:27.077] [DEBUG] QUERY OK db=10.6ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T04:48:39Z", "keys_config", 39744, ~N[2026-06-17 13:38:27], ~N[2026-06-17 13:38:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:27.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313589, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T04:48:39Z", message: "Current keys config version", status_log_id: 39744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:27], updated_at: ~N[2026-06-17 13:38:27]}} [2026-06-17 13:38:27.077] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:48:39Z", "value" => ""} [2026-06-17 13:38:27.101] [DEBUG] QUERY OK db=23.1ms idle=13.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T04:48:39Z", "application", 39744, ~N[2026-06-17 13:38:27], ~N[2026-06-17 13:38:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:27.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313590, itemkey: "application", value: nil, timestamp: "2026-06-17T04:48:39Z", message: "Current application version", status_log_id: 39744, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:27], updated_at: ~N[2026-06-17 13:38:27]}} [2026-06-17 13:38:27.104] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=25.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:38:27.108] [WARN ] Unexpected async result [2026-06-17 13:38:27.108] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:38:27.108] [WARN ] Unexpected async result [2026-06-17 13:38:34.160] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:38:34.160] [INFO ] Incoming JSON payload: {"oid":"1d6a808d-c0f7-4b9a-9dd3-61f5bbbda0d3","sn":"98251226730002","uploadTime":"2026-06-17T13:37:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"ram_free_mb","value":"673","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T13:37:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T13:37: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 13:38:34.161] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1d6a808d-c0f7-4b9a-9dd3-61f5bbbda0d3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:37:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T13:37:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:37:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:37:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:37:43Z", "value" => "673"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:37:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:37:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:37:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:37:43Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:37:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:37: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:37:43Z", "vendor" => "morefun"} [2026-06-17 13:38:34.161] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:38:34.161] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:38:34.161] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 13:38:34.164] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=1183.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-06-17 13:38:34.166] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.8ms idle=185.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-06-17 13:38:34.167] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:38:34.168] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=4.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:38:34.168] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:38:34.193] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms queue=0.4ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:38:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:38:34.194] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:38:34.194] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:38:34.228] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:38:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:38:34.252] [DEBUG] QUERY OK db=22.2ms queue=0.5ms idle=34.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1d6a808d-c0f7-4b9a-9dd3-61f5bbbda0d3", "2026-06-17T13:37:43Z", ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:38:34.252] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39746, oid: "1d6a808d-c0f7-4b9a-9dd3-61f5bbbda0d3", upload_time: "2026-06-17T13:37:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]} [2026-06-17 13:38:34.252] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T13:37:43Z", "value" => "morefun"} [2026-06-17 13:38:34.328] [DEBUG] QUERY OK db=34.5ms queue=41.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "morefun", "vendor", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313592, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.328] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T13:37:43Z", "value" => "kiosk_launcher"} [2026-06-17 13:38:34.387] [DEBUG] QUERY OK db=17.0ms queue=40.9ms idle=77.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "kiosk_launcher", "model", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313595, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.387] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T13:37:43Z", "value" => "1.0"} [2026-06-17 13:38:34.408] [DEBUG] QUERY OK db=20.2ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "1.0", "app_version", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313597, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.408] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T13:37:43Z", "value" => "13"} [2026-06-17 13:38:34.440] [DEBUG] QUERY OK db=31.9ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "13", "android_version", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313599, itemkey: "android_version", value: "13", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.441] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T13:37:43Z", "value" => "673"} [2026-06-17 13:38:34.465] [DEBUG] QUERY OK db=23.4ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "673", "ram_free_mb", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313601, itemkey: "ram_free_mb", value: "673", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.465] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T13:37:43Z", "value" => "WIFI"} [2026-06-17 13:38:34.485] [DEBUG] QUERY OK db=19.0ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "WIFI", "network_type", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313603, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.485] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T13:37:43Z", "value" => "true"} [2026-06-17 13:38:34.521] [DEBUG] QUERY OK db=35.3ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "true", "kiosk_active", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313605, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.521] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T13:37:43Z", "value" => ""} [2026-06-17 13:38:34.553] [DEBUG] QUERY OK db=31.0ms queue=0.3ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T13:37:43Z", "sim_operator", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313607, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.553] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"} [2026-06-17 13:38:34.569] [DEBUG] QUERY OK db=15.1ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "UNKNOWN", "sim_number", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313609, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.569] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"} [2026-06-17 13:38:34.592] [DEBUG] QUERY OK db=22.6ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "UNKNOWN", "sim_iccid", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313611, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.593] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"} [2026-06-17 13:38:34.636] [DEBUG] QUERY OK db=42.7ms queue=0.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "UNKNOWN", "sim_imsi", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313613, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.637] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"} [2026-06-17 13:38:34.652] [DEBUG] QUERY OK db=13.0ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "UNKNOWN", "sim_iccid2", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313615, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.652] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T13:37:43Z", "value" => "UNKNOWN"} [2026-06-17 13:38:34.675] [DEBUG] QUERY OK db=22.4ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "UNKNOWN", "sim_imsi2", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313617, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.675] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T13:37:43Z", "value" => "31"} [2026-06-17 13:38:34.708] [DEBUG] QUERY OK db=32.6ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "31", "data_usage_mb", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313619, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.709] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T13:37:43Z", "value" => "0"} [2026-06-17 13:38:34.736] [DEBUG] QUERY OK db=27.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37:43Z", "0", "mobile_data_mb", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313621, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.737] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T13:37: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 13:38:34.820] [DEBUG] QUERY OK db=81.4ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T13:37: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39746, ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:34.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313622, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T13:37:43Z", message: nil, status_log_id: 39746, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:34], updated_at: ~N[2026-06-17 13:38:34]}} [2026-06-17 13:38:34.821] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=84.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:38:34.824] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:38:34.898] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 13:38:34.898] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T04:48:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T04:48:48Z","value":"58"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T04:48:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T04:48:48Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T04:48:48Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T04:48:48Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T04:48:48Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T04:48:48Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-17T04:48:48Z","vendor":"MoreFun"} [2026-06-17 13:38:34.900] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:48:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:48:48Z", "value" => "58"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:48:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:48:48Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:48:48Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:48:48Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:48:48Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:48:48Z", "value" => ""}], "sn" => "98250623730001", "uploadTime" => "2026-06-17T04:48:48Z", "vendor" => "MoreFun"} [2026-06-17 13:38:34.900] [INFO ] Extracted versions for 98250623730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:38:34.900] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 13:38:34.900] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 13:38:34.902] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.6ms idle=82.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-06-17 13:38:34.903] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=81.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:38:34.905] [DEBUG] QUERY OK source="parameter_template_values" db=1.6ms idle=0.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-06-17 13:38:34.908] [DEBUG] QUERY OK source="parameter_definitions" db=1.5ms queue=0.4ms idle=2.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-06-17 13:38:34.910] [DEBUG] QUERY OK source="pos_terminal" db=1.7ms idle=3.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:38:34.951] [DEBUG] QUERY OK source="pos_merchant" db=40.0ms idle=2.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:38:34.952] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=1145.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 ["419926360000000"] [2026-06-17 13:38:34.952] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:38:34.955] [DEBUG] QUERY OK source="pos_terminal_data" db=2.4ms idle=41.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:38:34.955] [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` = ?) [409] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:38:34.956] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 13:38:34.957] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 13:38:34.972] [DEBUG] QUERY OK db=12.2ms queue=0.9ms idle=4.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c5a8020b1bcd82bf126a3d0b6ad36024e60703c6b84966805ea67f168ab3b7b4", 1635, 955, ~U[2026-06-17 13:38:34Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:38:34.972] [INFO ] AutoPushService: Created push log 29776 for MF919 params.zip [2026-06-17 13:38:34.972] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1635, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:38:34.973] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:38:34.973] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 13:38:34.974] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=17.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-06-17 13:38:34.977] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:38:35.000] [DEBUG] QUERY OK db=22.3ms queue=0.4ms idle=5.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "be4c16e2b7211ce9001f9307d8e32ce0dda7a085abc1f857b492bece6eed1704", 1667, 17947, ~U[2026-06-17 13:38:34Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:38:34], ~N[2026-06-17 13:38:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:38:35.000] [INFO ] AutoPushService: Created push log 29777 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:38:35.001] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1667, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:38:35.001] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:38:35.001] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 13:38:35.002] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=19.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-06-17 13:38:35.002] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 13:38:35.003] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:38:35.003] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:38:35.004] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:38:35.004] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:38:35.004] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:38:35.006] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms 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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-06-17 13:38:35.006] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:38:35.007] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 13:38:35.007] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=4.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:38:35.008] [INFO ] Terminal updated: 98250623730001 [2026-06-17 13:38:35.073] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms queue=40.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "1.0.1", "1.0.0", ~N[2026-06-17 13:38:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:38:35.075] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.5ms idle=66.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-06-17 13:38:35.075] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 13:38:35.075] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 13:38:35.076] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:38:35.118] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=40.9ms idle=0.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:38:35], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:38:35.168] [DEBUG] QUERY OK db=49.8ms queue=0.1ms idle=41.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-17T04:48:48Z", ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:38:35.168] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39748, oid: "organization_id", upload_time: "2026-06-17T04:48:48Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]} [2026-06-17 13:38:35.168] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:48:48Z", "value" => "online"} [2026-06-17 13:38:35.183] [DEBUG] QUERY OK db=13.3ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T04:48:48Z", "online", "status", 39748, ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:35.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313624, itemkey: "status", value: "online", timestamp: "2026-06-17T04:48:48Z", message: "Terminal status update", status_log_id: 39748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]}} [2026-06-17 13:38:35.183] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 13:38:35.183] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:48:48Z", "value" => "58"} [2026-06-17 13:38:35.184] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:38:35.206] [DEBUG] QUERY OK db=22.3ms queue=0.2ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T04:48:48Z", "58", "battery", 39748, ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:35.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313626, itemkey: "battery", value: "58", timestamp: "2026-06-17T04:48:48Z", message: "Battery level", status_log_id: 39748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]}} [2026-06-17 13:38:35.207] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:48:48Z", "value" => "online"} [2026-06-17 13:38:35.245] [DEBUG] QUERY OK db=37.3ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T04:48:48Z", "online", "network", 39748, ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:35.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313628, itemkey: "network", value: "online", timestamp: "2026-06-17T04:48:48Z", message: "Network connectivity", status_log_id: 39748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]}} [2026-06-17 13:38:35.245] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 13:38:35.246] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:38:35.246] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:48:48Z", "value" => "0"} [2026-06-17 13:38:35.267] [DEBUG] QUERY OK db=20.9ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T04:48:48Z", "0", "cpu", 39748, ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:35.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313630, itemkey: "cpu", value: "0", timestamp: "2026-06-17T04:48:48Z", message: "CPU usage percentage", status_log_id: 39748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]}} [2026-06-17 13:38:35.270] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:48:48Z", "value" => "1.0.0"} [2026-06-17 13:38:35.290] [DEBUG] QUERY OK db=19.9ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T04:48:48Z", "1.0.0", "parameter_config", 39748, ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:35.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313632, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T04:48:48Z", message: "Current parameters version", status_log_id: 39748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]}} [2026-06-17 13:38:35.290] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:48:48Z", "value" => "1.0.1"} [2026-06-17 13:38:35.323] [DEBUG] QUERY OK db=32.5ms queue=0.1ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T04:48:48Z", "1.0.1", "emv_config", 39748, ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:35.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313634, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T04:48:48Z", message: "Current EMV config version", status_log_id: 39748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]}} [2026-06-17 13:38:35.325] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:48:48Z", "value" => ""} [2026-06-17 13:38:35.381] [DEBUG] QUERY OK db=14.4ms queue=41.2ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T04:48:48Z", "keys_config", 39748, ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:35.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313636, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T04:48:48Z", message: "Current keys config version", status_log_id: 39748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]}} [2026-06-17 13:38:35.381] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:48:48Z", "value" => ""} [2026-06-17 13:38:35.453] [DEBUG] QUERY OK db=30.8ms queue=40.6ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T04:48:48Z", "application", 39748, ~N[2026-06-17 13:38:35], ~N[2026-06-17 13:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:35.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313638, itemkey: "application", value: nil, timestamp: "2026-06-17T04:48:48Z", message: "Current application version", status_log_id: 39748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:35], updated_at: ~N[2026-06-17 13:38:35]}} [2026-06-17 13:38:35.457] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.3ms idle=74.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:38:35.458] [WARN ] Unexpected async result [2026-06-17 13:38:35.458] [WARN ] Unexpected async result [2026-06-17 13:38:35.469] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:38:40.720] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 13:38:40.721] [INFO ] Incoming JSON payload: {"oid":"c0e871a4-1e79-4b10-966b-b0e81f891051","sn":"98251226730001","uploadTime":"2026-06-17T21:41:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"ram_free_mb","value":"941","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T21:41:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T21:41:53Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 13:38:40.721] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c0e871a4-1e79-4b10-966b-b0e81f891051", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T21:41:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T21:41:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T21:41:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T21:41:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T21:41:53Z", "value" => "941"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T21:41:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T21:41:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T21:41:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T21:41:53Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T21:41:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T21:41:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T21:41:53Z", "vendor" => "morefun"} [2026-06-17 13:38:40.724] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:38:40.725] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 13:38:40.726] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 13:38:40.727] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=768.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-06-17 13:38:40.728] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=734.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-06-17 13:38:40.728] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:38:40.730] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms 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:98 [2026-06-17 13:38:40.731] [INFO ] Terminal updated: 98251226730001 [2026-06-17 13:38:40.759] [DEBUG] QUERY OK source="tms_terminals" db=27.1ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:38:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:38:40.759] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 13:38:40.761] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=28.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:629 [2026-06-17 13:38:40.776] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:38:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:38:40.791] [DEBUG] QUERY OK db=14.9ms idle=15.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c0e871a4-1e79-4b10-966b-b0e81f891051", "2026-06-17T21:41:53Z", ~N[2026-06-17 13:38:40], ~N[2026-06-17 13:38:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:38:40.792] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39750, oid: "c0e871a4-1e79-4b10-966b-b0e81f891051", upload_time: "2026-06-17T21:41:53Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:40], updated_at: ~N[2026-06-17 13:38:40]} [2026-06-17 13:38:40.792] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T21:41:53Z", "value" => "morefun"} [2026-06-17 13:38:40.856] [DEBUG] QUERY OK db=22.8ms queue=41.5ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "morefun", "vendor", 39750, ~N[2026-06-17 13:38:40], ~N[2026-06-17 13:38:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:40.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313639, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:40], updated_at: ~N[2026-06-17 13:38:40]}} [2026-06-17 13:38:40.857] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T21:41:53Z", "value" => "kiosk_launcher"} [2026-06-17 13:38:40.909] [DEBUG] QUERY OK db=10.8ms queue=41.1ms idle=66.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "kiosk_launcher", "model", 39750, ~N[2026-06-17 13:38:40], ~N[2026-06-17 13:38:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:40.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313641, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:40], updated_at: ~N[2026-06-17 13:38:40]}} [2026-06-17 13:38:40.910] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T21:41:53Z", "value" => "1.0"} [2026-06-17 13:38:40.952] [DEBUG] QUERY OK db=41.7ms queue=0.3ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "1.0", "app_version", 39750, ~N[2026-06-17 13:38:40], ~N[2026-06-17 13:38:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:40.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313643, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:40], updated_at: ~N[2026-06-17 13:38:40]}} [2026-06-17 13:38:40.953] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T21:41:53Z", "value" => "13"} [2026-06-17 13:38:40.980] [DEBUG] QUERY OK db=26.7ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "13", "android_version", 39750, ~N[2026-06-17 13:38:40], ~N[2026-06-17 13:38:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:40.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313645, itemkey: "android_version", value: "13", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:40], updated_at: ~N[2026-06-17 13:38:40]}} [2026-06-17 13:38:40.980] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T21:41:53Z", "value" => "941"} [2026-06-17 13:38:41.000] [DEBUG] QUERY OK db=19.1ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "941", "ram_free_mb", 39750, ~N[2026-06-17 13:38:40], ~N[2026-06-17 13:38:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313647, itemkey: "ram_free_mb", value: "941", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:40], updated_at: ~N[2026-06-17 13:38:40]}} [2026-06-17 13:38:41.001] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T21:41:53Z", "value" => "WIFI"} [2026-06-17 13:38:41.030] [DEBUG] QUERY OK db=28.8ms idle=5.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "WIFI", "network_type", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313649, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.030] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T21:41:53Z", "value" => "true"} [2026-06-17 13:38:41.062] [DEBUG] QUERY OK db=31.6ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "true", "kiosk_active", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313651, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.063] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T21:41:53Z", "value" => ""} [2026-06-17 13:38:41.084] [DEBUG] QUERY OK db=20.2ms queue=0.4ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T21:41:53Z", "sim_operator", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313653, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.084] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"} [2026-06-17 13:38:41.113] [DEBUG] QUERY OK db=27.9ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "UNKNOWN", "sim_number", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313655, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.113] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"} [2026-06-17 13:38:41.152] [DEBUG] QUERY OK db=38.8ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "UNKNOWN", "sim_iccid", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313657, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.153] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"} [2026-06-17 13:38:41.167] [DEBUG] QUERY OK db=14.1ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "UNKNOWN", "sim_imsi", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313659, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.168] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"} [2026-06-17 13:38:41.197] [DEBUG] QUERY OK db=29.3ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "UNKNOWN", "sim_iccid2", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313661, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.198] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T21:41:53Z", "value" => "UNKNOWN"} [2026-06-17 13:38:41.231] [DEBUG] QUERY OK db=32.3ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "UNKNOWN", "sim_imsi2", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313663, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.231] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T21:41:53Z", "value" => "6"} [2026-06-17 13:38:41.251] [DEBUG] QUERY OK db=19.8ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "6", "data_usage_mb", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313665, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.252] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T21:41:53Z", "value" => "0"} [2026-06-17 13:38:41.266] [DEBUG] QUERY OK db=13.5ms queue=0.1ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "0", "mobile_data_mb", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313667, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.266] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T21:41:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 13:38:41.312] [DEBUG] QUERY OK db=44.5ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:41:53Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39750, ~N[2026-06-17 13:38:41], ~N[2026-06-17 13:38:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:38:41.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313669, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T21:41:53Z", message: nil, status_log_id: 39750, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:38:41], updated_at: ~N[2026-06-17 13:38:41]}} [2026-06-17 13:38:41.314] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.3ms idle=47.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:38:41.322] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:39:03.207] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 13:39:03.207] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T04:49:16Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T04:49:16Z","value":"58"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T04:49:16Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T04:49:16Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T04:49:16Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T04:49:16Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T04:49:16Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T04:49:16Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-17T04:49:16Z","vendor":"MoreFun"} [2026-06-17 13:39:03.207] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:49:16Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:49:16Z", "value" => "58"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:49:16Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:49:16Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:49:16Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:49:16Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:49:16Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:49:16Z", "value" => ""}], "sn" => "98250623730001", "uploadTime" => "2026-06-17T04:49:16Z", "vendor" => "MoreFun"} [2026-06-17 13:39:03.209] [INFO ] Extracted versions for 98250623730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:39:03.210] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 13:39:03.210] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 13:39:03.213] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=403.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-06-17 13:39:03.215] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=163.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:39:03.217] [DEBUG] QUERY OK source="parameter_template_values" db=1.8ms idle=2.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-06-17 13:39:03.222] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=3.5ms 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-06-17 13:39:03.227] [DEBUG] QUERY OK source="pos_terminal" db=4.6ms 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 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:39:03.262] [DEBUG] QUERY OK source="pos_merchant" db=34.8ms idle=5.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:39:03.265] [DEBUG] QUERY OK db=0.9ms queue=1.1ms idle=1456.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 ["419926360000000"] [2026-06-17 13:39:03.265] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:39:03.269] [DEBUG] QUERY OK source="pos_terminal_data" db=3.4ms idle=38.3ms 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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:39:03.271] [DEBUG] QUERY OK source="address" db=2.0ms idle=6.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` = ?) [409] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:39:03.272] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 13:39:03.277] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 13:39:03.293] [DEBUG] QUERY OK db=15.2ms idle=8.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8820e6f09e1ce64ea2e1396a84f0ba1bd807d5410cf15fe835d03aedf4c28c22", 1763, 955, ~U[2026-06-17 13:39:03Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:39:03.293] [INFO ] AutoPushService: Created push log 29778 for MF919 params.zip [2026-06-17 13:39:03.293] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1763, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:39:03.294] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:39:03.294] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 13:39:03.305] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=31.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-06-17 13:39:03.319] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:39:03.358] [DEBUG] QUERY OK db=35.9ms idle=29.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5f7c0f72db1545c359e4f5d91251b2fae53d6f9543b3a7e4fe49ed13d1b0ec43", 1827, 17947, ~U[2026-06-17 13:39:03Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:39:03.358] [INFO ] AutoPushService: Created push log 29779 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:39:03.359] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1827, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:39:03.359] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:39:03.359] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 13:39:03.370] [DEBUG] QUERY OK source="config_file_versions" db=10.9ms idle=53.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-06-17 13:39:03.370] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 13:39:03.378] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=19.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:39:03.379] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:39:03.386] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:39:03.389] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:03.390] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:03.396] [DEBUG] QUERY OK source="config_file_versions" db=5.9ms queue=0.1ms idle=19.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-06-17 13:39:03.398] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:39:03.398] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 13:39:03.400] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=19.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:39:03.400] [INFO ] Terminal updated: 98250623730001 [2026-06-17 13:39:03.404] [DEBUG] QUERY OK source="parameter_templates" db=3.6ms idle=4.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-06-17 13:39:03.409] [DEBUG] QUERY OK source="config_file_versions" db=3.8ms queue=0.4ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 13:39:03.409] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 13:39:03.412] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=5.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:39:03.415] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:39:03.436] [DEBUG] QUERY OK db=19.6ms queue=0.4ms idle=3.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-17T04:49:16Z", ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:39:03.436] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39752, oid: "organization_id", upload_time: "2026-06-17T04:49:16Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]} [2026-06-17 13:39:03.436] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:49:16Z", "value" => "online"} [2026-06-17 13:39:03.488] [DEBUG] QUERY OK db=49.8ms queue=1.5ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T04:49:16Z", "online", "status", 39752, ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:03.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313672, itemkey: "status", value: "online", timestamp: "2026-06-17T04:49:16Z", message: "Terminal status update", status_log_id: 39752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]}} [2026-06-17 13:39:03.488] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 13:39:03.492] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=52.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:03], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 13:39:03.493] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:03.492] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:49:16Z", "value" => "58"} [2026-06-17 13:39:03.521] [DEBUG] QUERY OK db=22.9ms queue=1.9ms idle=8.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T04:49:16Z", "58", "battery", 39752, ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:03.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313674, itemkey: "battery", value: "58", timestamp: "2026-06-17T04:49:16Z", message: "Battery level", status_log_id: 39752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]}} [2026-06-17 13:39:03.522] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:49:16Z", "value" => "online"} [2026-06-17 13:39:03.549] [DEBUG] QUERY OK db=25.1ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T04:49:16Z", "online", "network", 39752, ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:03.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313676, itemkey: "network", value: "online", timestamp: "2026-06-17T04:49:16Z", message: "Network connectivity", status_log_id: 39752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]}} [2026-06-17 13:39:03.550] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 13:39:03.557] [DEBUG] QUERY OK source="tms_terminals" db=5.2ms queue=1.0ms idle=29.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:03], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 13:39:03.557] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:49:16Z", "value" => "0"} [2026-06-17 13:39:03.557] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:03.583] [DEBUG] QUERY OK db=25.4ms queue=0.3ms idle=8.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T04:49:16Z", "0", "cpu", 39752, ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:03.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313678, itemkey: "cpu", value: "0", timestamp: "2026-06-17T04:49:16Z", message: "CPU usage percentage", status_log_id: 39752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]}} [2026-06-17 13:39:03.587] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:49:16Z", "value" => "1.0.0"} [2026-06-17 13:39:03.605] [DEBUG] QUERY OK db=17.5ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T04:49:16Z", "1.0.0", "parameter_config", 39752, ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:03.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313680, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T04:49:16Z", message: "Current parameters version", status_log_id: 39752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]}} [2026-06-17 13:39:03.608] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:49:16Z", "value" => "1.0.1"} [2026-06-17 13:39:03.639] [DEBUG] QUERY OK db=30.4ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T04:49:16Z", "1.0.1", "emv_config", 39752, ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:03.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313682, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T04:49:16Z", message: "Current EMV config version", status_log_id: 39752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]}} [2026-06-17 13:39:03.641] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:49:16Z", "value" => ""} [2026-06-17 13:39:03.720] [DEBUG] QUERY OK db=32.7ms queue=45.6ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T04:49:16Z", "keys_config", 39752, ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:03.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313684, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T04:49:16Z", message: "Current keys config version", status_log_id: 39752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]}} [2026-06-17 13:39:03.721] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:49:16Z", "value" => ""} [2026-06-17 13:39:03.802] [DEBUG] QUERY OK db=38.8ms queue=41.0ms idle=82.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T04:49:16Z", "application", 39752, ~N[2026-06-17 13:39:03], ~N[2026-06-17 13:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:03.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313686, itemkey: "application", value: nil, timestamp: "2026-06-17T04:49:16Z", message: "Current application version", status_log_id: 39752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:03], updated_at: ~N[2026-06-17 13:39:03]}} [2026-06-17 13:39:03.806] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=0.8ms idle=82.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 13:39:03.806] [WARN ] Unexpected async result [2026-06-17 13:39:03.806] [WARN ] Unexpected async result [2026-06-17 13:39:03.811] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:39:03.827] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:39:12.831] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:39:12.832] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T13:38:23Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T13:38:23Z","value":"19"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T13:38:23Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T13:38:23Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T13:38:23Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T13:38:23Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T13:38:23Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T13:38:23Z","value":""},{"itemkey":"latitude","message":"Device Latitude","timestamp":"2026-06-17T13:38:23Z","value":"13.024416666666665"},{"itemkey":"longitude","message":"Device Longitude","timestamp":"2026-06-17T13:38:23Z","value":"77.64009166666666"}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T13:38:23Z","vendor":"MoreFun"} [2026-06-17 13:39:12.832] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:38:23Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:38:23Z", "value" => "19"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:38:23Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:38:23Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:38:23Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:38:23Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:38:23Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:38:23Z", "value" => ""}, %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:38:23Z", "value" => "13.024416666666665"}, %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:38:23Z", "value" => "77.64009166666666"}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:38:23Z", "vendor" => "MoreFun"} [2026-06-17 13:39:12.832] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:39:12.833] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:39:12.834] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 13:39:12.835] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=1028.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", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 13:39:12.836] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=751.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:39:12.838] [DEBUG] QUERY OK source="parameter_template_values" db=1.8ms idle=1.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-06-17 13:39:12.841] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.7ms 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-06-17 13:39:12.842] [DEBUG] QUERY OK source="pos_terminal" db=0.3ms 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 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:39:12.881] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=0.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:39:12.884] [DEBUG] QUERY OK db=0.9ms queue=1.0ms idle=75.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 ["372916040000000"] [2026-06-17 13:39:12.884] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:39:12.885] [DEBUG] QUERY OK source="pos_terminal_data" db=1.2ms idle=42.3ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:39:12.887] [DEBUG] QUERY OK source="address" db=1.8ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:39:12.888] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 13:39:12.892] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 13:39:12.931] [DEBUG] QUERY OK db=36.8ms queue=0.8ms idle=8.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d9e1556811db4d18331d83f85f2890d60d456b2ab76a4a1995eea0a76601484b", 1859, 940, ~U[2026-06-17 13:39:12Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:39:12], ~N[2026-06-17 13:39:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:39:12.932] [INFO ] AutoPushService: Created push log 29780 for MF919 params.zip [2026-06-17 13:39:12.932] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 1859, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:39:12.932] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:39:12.932] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 13:39:12.933] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=44.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-06-17 13:39:12.939] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:39:12.964] [DEBUG] QUERY OK db=24.3ms idle=8.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "52163599a48ec81e866e47456fd6812bc19a3f8c8b35467e0bc0b27d8fa61251", 5506, 17947, ~U[2026-06-17 13:39:12Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:39:12], ~N[2026-06-17 13:39:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:39:12.965] [INFO ] AutoPushService: Created push log 29781 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:39:12.965] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 5506, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:39:12.965] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:39:12.966] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 13:39:12.967] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.1ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-06-17 13:39:12.967] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 13:39:12.968] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:39:12.968] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:39:12.972] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:39:12.972] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:12.972] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:12.973] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=5.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-06-17 13:39:12.974] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:39:12.974] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 13:39:12.975] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:39:12.975] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:39:13.032] [DEBUG] QUERY OK source="tms_terminals" db=15.7ms queue=40.8ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "1.0.1", "1.0.0", ~N[2026-06-17 13:39:12], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:39:13.033] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=57.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-06-17 13:39:13.034] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-06-17 13:39:13.034] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:39:13.035] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:39:13.087] [DEBUG] QUERY OK source="tms_terminals" db=10.9ms queue=41.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:39:13.104] [DEBUG] QUERY OK db=15.5ms idle=2.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T13:38:23Z", ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:39:13.104] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39754, oid: "organization_id", upload_time: "2026-06-17T13:38:23Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]} [2026-06-17 13:39:13.104] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:38:23Z", "value" => "online"} [2026-06-17 13:39:13.135] [DEBUG] QUERY OK db=30.2ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T13:38:23Z", "online", "status", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313688, itemkey: "status", value: "online", timestamp: "2026-06-17T13:38:23Z", message: "Terminal status update", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.135] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 13:39:13.135] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:38:23Z", "value" => "19"} [2026-06-17 13:39:13.135] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:13.168] [DEBUG] QUERY OK db=32.2ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T13:38:23Z", "19", "battery", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313690, itemkey: "battery", value: "19", timestamp: "2026-06-17T13:38:23Z", message: "Battery level", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.169] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:38:23Z", "value" => "online"} [2026-06-17 13:39:13.189] [DEBUG] QUERY OK db=19.5ms queue=0.7ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T13:38:23Z", "online", "network", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313692, itemkey: "network", value: "online", timestamp: "2026-06-17T13:38:23Z", message: "Network connectivity", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.190] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 13:39:13.190] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:38:23Z", "value" => "0"} [2026-06-17 13:39:13.191] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:13.219] [DEBUG] QUERY OK db=28.2ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T13:38:23Z", "0", "cpu", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313694, itemkey: "cpu", value: "0", timestamp: "2026-06-17T13:38:23Z", message: "CPU usage percentage", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.219] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:38:23Z", "value" => "1.0.0"} [2026-06-17 13:39:13.261] [DEBUG] QUERY OK db=41.6ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T13:38:23Z", "1.0.0", "parameter_config", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313696, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T13:38:23Z", message: "Current parameters version", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.262] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:38:23Z", "value" => "1.0.1"} [2026-06-17 13:39:13.276] [DEBUG] QUERY OK db=13.7ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T13:38:23Z", "1.0.1", "emv_config", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313698, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T13:38:23Z", message: "Current EMV config version", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.277] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:38:23Z", "value" => ""} [2026-06-17 13:39:13.294] [DEBUG] QUERY OK db=16.9ms idle=15.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T13:38:23Z", "keys_config", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313700, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T13:38:23Z", message: "Current keys config version", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.295] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:38:23Z", "value" => ""} [2026-06-17 13:39:13.328] [DEBUG] QUERY OK db=33.1ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T13:38:23Z", "application", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313702, itemkey: "application", value: nil, timestamp: "2026-06-17T13:38:23Z", message: "Current application version", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.329] [INFO ] Saving status item: %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:38:23Z", "value" => "13.024416666666665"} [2026-06-17 13:39:13.356] [DEBUG] QUERY OK db=26.7ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Latitude", "2026-06-17T13:38:23Z", "13.024416666666665", "latitude", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313704, itemkey: "latitude", value: "13.024416666666665", timestamp: "2026-06-17T13:38:23Z", message: "Device Latitude", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.356] [INFO ] Saving status item: %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:38:23Z", "value" => "77.64009166666666"} [2026-06-17 13:39:13.375] [DEBUG] QUERY OK db=18.7ms queue=0.1ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Longitude", "2026-06-17T13:38:23Z", "77.64009166666666", "longitude", 39754, ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:13.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313706, itemkey: "longitude", value: "77.64009166666666", timestamp: "2026-06-17T13:38:23Z", message: "Device Longitude", status_log_id: 39754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]}} [2026-06-17 13:39:13.376] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T13:38:23Z"} [2026-06-17 13:39:13.378] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.2ms idle=20.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:39:13.385] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:39:13.382] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:38:23Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{"phoenix_client_shamanth" => true}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:39:13.737] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 13:39:13.738] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T13:38:23Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T13:38:23Z","value":"19"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T13:38:23Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T13:38:23Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T13:38:23Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T13:38:23Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T13:38:23Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T13:38:23Z","value":""},{"itemkey":"latitude","message":"Device Latitude","timestamp":"2026-06-17T13:38:23Z","value":"12.9715987"},{"itemkey":"longitude","message":"Device Longitude","timestamp":"2026-06-17T13:38:23Z","value":"77.5945627"}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-06-17T13:38:23Z","vendor":"MoreFun"} [2026-06-17 13:39:13.739] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:38:23Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:38:23Z", "value" => "19"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:38:23Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:38:23Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:38:23Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:38:23Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:38:23Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:38:23Z", "value" => ""}, %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:38:23Z", "value" => "12.9715987"}, %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:38:23Z", "value" => "77.5945627"}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T13:38:23Z", "vendor" => "MoreFun"} [2026-06-17 13:39:13.739] [INFO ] Extracted versions for 98251226730002: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:39:13.740] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 13:39:13.740] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-06-17 13:39:13.743] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=364.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-06-17 13:39:13.777] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms idle=365.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:39:13.778] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.3ms idle=34.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-06-17 13:39:13.782] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=2.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-06-17 13:39:13.784] [DEBUG] QUERY OK source="pos_terminal" db=1.6ms idle=4.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:39:13.824] [DEBUG] QUERY OK source="pos_merchant" db=39.2ms idle=2.5ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [106] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:39:13.832] [DEBUG] QUERY OK db=4.0ms queue=3.3ms idle=1017.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 ["372916040000000"] [2026-06-17 13:39:13.832] [INFO ] ParamsZipBuilder: Merchant info for merchantid=372916040000000 - business_name=tic tac, QR_USE_SSL=0, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:39:13.833] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=48.0ms 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 ["91604486"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:39:13.834] [DEBUG] QUERY OK source="address" db=1.0ms idle=9.3ms 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` = ?) [300] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:39:13.835] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="372916040000000" [2026-06-17 13:39:13.837] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-06-17 13:39:13.883] [DEBUG] QUERY OK db=43.0ms queue=0.3ms idle=5.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e81b9e7d3fca8247f3343a95a8500deb5f0ddb69c703fe9c71411e2176864045", 5602, 940, ~U[2026-06-17 13:39:13Z], "priv/ota/98251226730002/params.zip", 13, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:39:13.883] [INFO ] AutoPushService: Created push log 29782 for MF919 params.zip [2026-06-17 13:39:13.883] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 5602, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:39:13.883] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:39:13.883] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-06-17 13:39:13.890] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=1.3ms idle=53.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-06-17 13:39:13.894] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:39:13.935] [DEBUG] QUERY OK db=38.9ms queue=0.3ms idle=13.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fc523d23adc4bacaf5c2f0cc7d215585e5dc255255472a7d4c0f938fb161cbb5", 2051, 17947, ~U[2026-06-17 13:39:13Z], "priv/ota/98251226730002/l3config.zip", 13, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:39:13.935] [INFO ] AutoPushService: Created push log 29783 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:39:13.935] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 2051, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:39:13.935] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-06-17 13:39:13.936] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-06-17 13:39:13.937] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=46.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-06-17 13:39:13.937] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-06-17 13:39:13.937] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:39:13.938] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:39:13.939] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:39:13.939] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:13.939] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:13.940] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.2ms idle=2.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-06-17 13:39:13.940] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:39:13.940] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-06-17 13:39:13.941] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:39:13.941] [INFO ] Terminal updated: 98251226730002 [2026-06-17 13:39:13.963] [DEBUG] QUERY OK source="tms_terminals" db=21.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:39:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:39:13.963] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=22.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-06-17 13:39:13.964] [DEBUG] QUERY OK source="config_file_versions" db=0.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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 13:39:13.964] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 13:39:13.965] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:39:13.999] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:13], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:39:14.035] [DEBUG] QUERY OK db=35.5ms idle=34.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-06-17T13:38:23Z", ~N[2026-06-17 13:39:13], ~N[2026-06-17 13:39:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:39:14.036] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39756, oid: "organization_id", upload_time: "2026-06-17T13:38:23Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:13], updated_at: ~N[2026-06-17 13:39:13]} [2026-06-17 13:39:14.036] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T13:38:23Z", "value" => "online"} [2026-06-17 13:39:14.071] [DEBUG] QUERY OK db=34.6ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T13:38:23Z", "online", "status", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313710, itemkey: "status", value: "online", timestamp: "2026-06-17T13:38:23Z", message: "Terminal status update", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.071] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-06-17 13:39:14.072] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T13:38:23Z", "value" => "19"} [2026-06-17 13:39:14.072] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:14.103] [DEBUG] QUERY OK db=30.5ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T13:38:23Z", "19", "battery", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313712, itemkey: "battery", value: "19", timestamp: "2026-06-17T13:38:23Z", message: "Battery level", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.103] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T13:38:23Z", "value" => "online"} [2026-06-17 13:39:14.126] [DEBUG] QUERY OK db=21.9ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T13:38:23Z", "online", "network", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313714, itemkey: "network", value: "online", timestamp: "2026-06-17T13:38:23Z", message: "Network connectivity", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.126] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-06-17 13:39:14.126] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T13:38:23Z", "value" => "0"} [2026-06-17 13:39:14.126] [INFO ] Terminal 98251226730002 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:14.142] [DEBUG] QUERY OK db=14.9ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T13:38:23Z", "0", "cpu", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313716, itemkey: "cpu", value: "0", timestamp: "2026-06-17T13:38:23Z", message: "CPU usage percentage", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.143] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T13:38:23Z", "value" => "1.0.0"} [2026-06-17 13:39:14.176] [DEBUG] QUERY OK db=32.7ms queue=0.1ms idle=17.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T13:38:23Z", "1.0.0", "parameter_config", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313718, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T13:38:23Z", message: "Current parameters version", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.176] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T13:38:23Z", "value" => "1.0.1"} [2026-06-17 13:39:14.208] [DEBUG] QUERY OK db=30.8ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T13:38:23Z", "1.0.1", "emv_config", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313720, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T13:38:23Z", message: "Current EMV config version", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.208] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T13:38:23Z", "value" => ""} [2026-06-17 13:39:14.226] [DEBUG] QUERY OK db=17.3ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T13:38:23Z", "keys_config", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313722, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T13:38:23Z", message: "Current keys config version", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.226] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T13:38:23Z", "value" => ""} [2026-06-17 13:39:14.254] [DEBUG] QUERY OK db=27.4ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T13:38:23Z", "application", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313724, itemkey: "application", value: nil, timestamp: "2026-06-17T13:38:23Z", message: "Current application version", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.256] [INFO ] Saving status item: %{"itemkey" => "latitude", "message" => "Device Latitude", "timestamp" => "2026-06-17T13:38:23Z", "value" => "12.9715987"} [2026-06-17 13:39:14.290] [DEBUG] QUERY OK db=31.9ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Latitude", "2026-06-17T13:38:23Z", "12.9715987", "latitude", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313725, itemkey: "latitude", value: "12.9715987", timestamp: "2026-06-17T13:38:23Z", message: "Device Latitude", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.290] [INFO ] Saving status item: %{"itemkey" => "longitude", "message" => "Device Longitude", "timestamp" => "2026-06-17T13:38:23Z", "value" => "77.5945627"} [2026-06-17 13:39:14.302] [DEBUG] QUERY OK db=10.7ms queue=0.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Longitude", "2026-06-17T13:38:23Z", "77.5945627", "longitude", 39756, ~N[2026-06-17 13:39:14], ~N[2026-06-17 13:39:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:14.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313726, itemkey: "longitude", value: "77.5945627", timestamp: "2026-06-17T13:38:23Z", message: "Device Longitude", status_log_id: 39756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:14], updated_at: ~N[2026-06-17 13:39:14]}} [2026-06-17 13:39:14.305] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=14.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:39:14.303] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-06-17T13:38:24Z"} [2026-06-17 13:39:14.306] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:38:24Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:39:14.313] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:39:15.498] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 13:39:15.498] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T04:49:28Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T04:49:28Z","value":"58"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T04:49:28Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T04:49:28Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T04:49:28Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T04:49:28Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T04:49:28Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T04:49:28Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-17T04:49:28Z","vendor":"MoreFun"} [2026-06-17 13:39:15.498] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:49:28Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:49:28Z", "value" => "58"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:49:28Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:49:28Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:49:28Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:49:28Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:49:28Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:49:28Z", "value" => ""}], "sn" => "98250623730001", "uploadTime" => "2026-06-17T04:49:28Z", "vendor" => "MoreFun"} [2026-06-17 13:39:15.498] [INFO ] Extracted versions for 98250623730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:39:15.499] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 13:39:15.499] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 13:39:15.500] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=1194.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-06-17 13:39:15.501] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=410.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:39:15.502] [DEBUG] QUERY OK source="parameter_template_values" db=0.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-06-17 13:39:15.505] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.9ms idle=1.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-06-17 13:39:15.506] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms idle=2.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:39:15.545] [DEBUG] QUERY OK source="pos_merchant" db=39.1ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:39:15.547] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=1714.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 ["419926360000000"] [2026-06-17 13:39:15.547] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:39:15.548] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.0ms 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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:39:15.548] [DEBUG] QUERY OK source="address" db=0.6ms idle=2.3ms 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` = ?) [409] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:39:15.549] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 13:39:15.551] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 13:39:15.616] [DEBUG] QUERY OK db=63.6ms queue=0.2ms idle=3.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "41c2dd39be3adfea9f2df971632a98db4b33a661eb84995d4218575585ea3ddb", 5698, 955, ~U[2026-06-17 13:39:15Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:39:15.616] [INFO ] AutoPushService: Created push log 29784 for MF919 params.zip [2026-06-17 13:39:15.616] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 5698, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:39:15.616] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:39:15.616] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 13:39:15.617] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=67.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-06-17 13:39:15.621] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:39:15.653] [DEBUG] QUERY OK db=31.8ms idle=6.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a95a9b899137d40cb4f29e0c86eef1d618dd4fef8aea34cb98df41e7c9549cae", 5794, 17947, ~U[2026-06-17 13:39:15Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:39:15.654] [INFO ] AutoPushService: Created push log 29785 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:39:15.654] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 5794, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:39:15.654] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:39:15.654] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 13:39:15.656] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=38.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-06-17 13:39:15.656] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 13:39:15.658] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:39:15.658] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:39:15.663] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:39:15.663] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:15.663] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:15.664] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=7.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-06-17 13:39:15.665] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:39:15.665] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 13:39:15.667] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.6ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:39:15.667] [INFO ] Terminal updated: 98250623730001 [2026-06-17 13:39:15.670] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=2.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-06-17 13:39:15.671] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.2ms 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-06-17 13:39:15.671] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 13:39:15.672] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:39:15.681] [DEBUG] QUERY OK source="tms_terminals" db=8.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:15], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:39:15.699] [DEBUG] QUERY OK db=18.0ms idle=9.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-17T04:49:28Z", ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:39:15.700] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39758, oid: "organization_id", upload_time: "2026-06-17T04:49:28Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]} [2026-06-17 13:39:15.702] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:49:28Z", "value" => "online"} [2026-06-17 13:39:15.734] [DEBUG] QUERY OK db=31.9ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T04:49:28Z", "online", "status", 39758, ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:15.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313728, itemkey: "status", value: "online", timestamp: "2026-06-17T04:49:28Z", message: "Terminal status update", status_log_id: 39758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]}} [2026-06-17 13:39:15.734] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 13:39:15.736] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=35.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:15], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 13:39:15.736] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:49:28Z", "value" => "58"} [2026-06-17 13:39:15.736] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:15.774] [DEBUG] QUERY OK db=37.4ms idle=2.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T04:49:28Z", "58", "battery", 39758, ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:15.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313730, itemkey: "battery", value: "58", timestamp: "2026-06-17T04:49:28Z", message: "Battery level", status_log_id: 39758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]}} [2026-06-17 13:39:15.774] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:49:28Z", "value" => "online"} [2026-06-17 13:39:15.789] [DEBUG] QUERY OK db=13.9ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T04:49:28Z", "online", "network", 39758, ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:15.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313732, itemkey: "network", value: "online", timestamp: "2026-06-17T04:49:28Z", message: "Network connectivity", status_log_id: 39758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]}} [2026-06-17 13:39:15.789] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 13:39:15.790] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=16.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:15], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 13:39:15.790] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:49:28Z", "value" => "0"} [2026-06-17 13:39:15.791] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:15.816] [DEBUG] QUERY OK db=24.5ms idle=2.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T04:49:28Z", "0", "cpu", 39758, ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:15.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313734, itemkey: "cpu", value: "0", timestamp: "2026-06-17T04:49:28Z", message: "CPU usage percentage", status_log_id: 39758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]}} [2026-06-17 13:39:15.817] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:49:28Z", "value" => "1.0.0"} [2026-06-17 13:39:15.849] [DEBUG] QUERY OK db=30.6ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T04:49:28Z", "1.0.0", "parameter_config", 39758, ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:15.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313736, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T04:49:28Z", message: "Current parameters version", status_log_id: 39758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]}} [2026-06-17 13:39:15.850] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:49:28Z", "value" => "1.0.1"} [2026-06-17 13:39:15.875] [DEBUG] QUERY OK db=24.1ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T04:49:28Z", "1.0.1", "emv_config", 39758, ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:15.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313738, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T04:49:28Z", message: "Current EMV config version", status_log_id: 39758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]}} [2026-06-17 13:39:15.875] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:49:28Z", "value" => ""} [2026-06-17 13:39:15.893] [DEBUG] QUERY OK db=17.7ms queue=0.2ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T04:49:28Z", "keys_config", 39758, ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:15.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313740, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T04:49:28Z", message: "Current keys config version", status_log_id: 39758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]}} [2026-06-17 13:39:15.894] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:49:28Z", "value" => ""} [2026-06-17 13:39:15.942] [DEBUG] QUERY OK db=48.2ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T04:49:28Z", "application", 39758, ~N[2026-06-17 13:39:15], ~N[2026-06-17 13:39:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:15.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313742, itemkey: "application", value: nil, timestamp: "2026-06-17T04:49:28Z", message: "Current application version", status_log_id: 39758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:15], updated_at: ~N[2026-06-17 13:39:15]}} [2026-06-17 13:39:15.944] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=49.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:15], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 13:39:15.944] [WARN ] Unexpected async result [2026-06-17 13:39:15.944] [WARN ] Unexpected async result [2026-06-17 13:39:15.946] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.1ms idle=2.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:39:15.952] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:39:29.336] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 13:39:29.336] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T04:49:42Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T04:49:42Z","value":"58"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T04:49:42Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T04:49:42Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T04:49:42Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T04:49:42Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T04:49:42Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T04:49:42Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-17T04:49:42Z","vendor":"MoreFun"} [2026-06-17 13:39:29.336] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:49:42Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:49:42Z", "value" => "58"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:49:42Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:49:42Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:49:42Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:49:42Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:49:42Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:49:42Z", "value" => ""}], "sn" => "98250623730001", "uploadTime" => "2026-06-17T04:49:42Z", "vendor" => "MoreFun"} [2026-06-17 13:39:29.337] [INFO ] Extracted versions for 98250623730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:39:29.337] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 13:39:29.337] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 13:39:29.340] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=1217.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-06-17 13:39:29.342] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=217.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:39:29.344] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms queue=0.1ms 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` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-06-17 13:39:29.346] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=0.7ms 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-06-17 13:39:29.348] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.5ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:39:29.386] [DEBUG] QUERY OK source="pos_merchant" db=38.1ms idle=2.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:39:29.388] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=580.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 ["419926360000000"] [2026-06-17 13:39:29.388] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:39:29.389] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=40.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:39:29.390] [DEBUG] QUERY OK source="address" db=0.3ms queue=0.3ms idle=3.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` = ?) [409] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:39:29.391] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 13:39:29.392] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 13:39:29.424] [DEBUG] QUERY OK db=31.3ms idle=2.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5681e60a0860675b5e147d3622df8dd0a2f9e2df87f751db417511a5e1dfa632", 5922, 956, ~U[2026-06-17 13:39:29Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:39:29.424] [INFO ] AutoPushService: Created push log 29786 for MF919 params.zip [2026-06-17 13:39:29.425] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 5922, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:39:29.425] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:39:29.425] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 13:39:29.427] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=34.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-06-17 13:39:29.430] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:39:29.463] [DEBUG] QUERY OK db=32.7ms idle=6.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ac2a999d2e07dbdcaefa0e4ac53028bfc22efb9a6aa603d57e909934f4eeae3e", 2275, 17947, ~U[2026-06-17 13:39:29Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:39:29.463] [INFO ] AutoPushService: Created push log 29787 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:39:29.463] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 2275, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:39:29.463] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:39:29.464] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 13:39:29.465] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=37.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-06-17 13:39:29.465] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 13:39:29.466] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:39:29.467] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:39:29.468] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:39:29.468] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:29.469] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:29.470] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms 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-06-17 13:39:29.471] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:39:29.471] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 13:39:29.474] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:39:29.474] [INFO ] Terminal updated: 98250623730001 [2026-06-17 13:39:29.476] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=4.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-06-17 13:39:29.477] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 13:39:29.477] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 13:39:29.479] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:39:29.490] [DEBUG] QUERY OK source="tms_terminals" db=10.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:29], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:39:29.510] [DEBUG] QUERY OK db=19.5ms idle=11.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-17T04:49:42Z", ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:39:29.510] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39759, oid: "organization_id", upload_time: "2026-06-17T04:49:42Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]} [2026-06-17 13:39:29.510] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:49:42Z", "value" => "online"} [2026-06-17 13:39:29.550] [DEBUG] QUERY OK db=38.4ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T04:49:42Z", "online", "status", 39759, ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:29.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313743, itemkey: "status", value: "online", timestamp: "2026-06-17T04:49:42Z", message: "Terminal status update", status_log_id: 39759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]}} [2026-06-17 13:39:29.550] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 13:39:29.552] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.4ms idle=40.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:29], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 13:39:29.552] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:49:42Z", "value" => "58"} [2026-06-17 13:39:29.552] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:29.576] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=2.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T04:49:42Z", "58", "battery", 39759, ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:29.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313745, itemkey: "battery", value: "58", timestamp: "2026-06-17T04:49:42Z", message: "Battery level", status_log_id: 39759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]}} [2026-06-17 13:39:29.576] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:49:42Z", "value" => "online"} [2026-06-17 13:39:29.598] [DEBUG] QUERY OK db=21.1ms queue=0.1ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T04:49:42Z", "online", "network", 39759, ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:29.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313747, itemkey: "network", value: "online", timestamp: "2026-06-17T04:49:42Z", message: "Network connectivity", status_log_id: 39759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]}} [2026-06-17 13:39:29.599] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 13:39:29.599] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=23.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:29], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:157 [2026-06-17 13:39:29.600] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:29.599] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:49:42Z", "value" => "0"} [2026-06-17 13:39:29.637] [DEBUG] QUERY OK db=36.2ms queue=0.1ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T04:49:42Z", "0", "cpu", 39759, ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:29.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313749, itemkey: "cpu", value: "0", timestamp: "2026-06-17T04:49:42Z", message: "CPU usage percentage", status_log_id: 39759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]}} [2026-06-17 13:39:29.638] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:49:42Z", "value" => "1.0.0"} [2026-06-17 13:39:29.663] [DEBUG] QUERY OK db=25.0ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T04:49:42Z", "1.0.0", "parameter_config", 39759, ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:29.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313751, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T04:49:42Z", message: "Current parameters version", status_log_id: 39759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]}} [2026-06-17 13:39:29.664] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:49:42Z", "value" => "1.0.1"} [2026-06-17 13:39:29.686] [DEBUG] QUERY OK db=22.0ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T04:49:42Z", "1.0.1", "emv_config", 39759, ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:29.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313753, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T04:49:42Z", message: "Current EMV config version", status_log_id: 39759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]}} [2026-06-17 13:39:29.687] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:49:42Z", "value" => ""} [2026-06-17 13:39:29.721] [DEBUG] QUERY OK db=33.6ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T04:49:42Z", "keys_config", 39759, ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:29.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313755, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T04:49:42Z", message: "Current keys config version", status_log_id: 39759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]}} [2026-06-17 13:39:29.721] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:49:42Z", "value" => ""} [2026-06-17 13:39:29.754] [DEBUG] QUERY OK db=32.4ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T04:49:42Z", "application", 39759, ~N[2026-06-17 13:39:29], ~N[2026-06-17 13:39:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:29.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313757, itemkey: "application", value: nil, timestamp: "2026-06-17T04:49:42Z", message: "Current application version", status_log_id: 39759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:29], updated_at: ~N[2026-06-17 13:39:29]}} [2026-06-17 13:39:29.756] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.3ms idle=33.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:29], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:187 [2026-06-17 13:39:29.756] [WARN ] Unexpected async result [2026-06-17 13:39:29.756] [WARN ] Unexpected async result [2026-06-17 13:39:29.757] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:39:29.762] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:39:33.305] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T13:38:23Z"} [2026-06-17 13:39:33.306] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:38:23Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 8, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:39:34.261] [INFO ] Received OTA ACK from device 98251226730002: {"oid":"","sn":"98251226730002","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-06-17T13:38:24Z"} [2026-06-17 13:39:34.262] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_shamanth"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730002", "status" => "error", "timestamp" => "2026-06-17T13:38:24Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/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: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 50, 0, 11, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_shamanth", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}} [2026-06-17 13:39:47.109] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 13:39:47.109] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T04:50:00Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T04:50:00Z","value":"58"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T04:50:00Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T04:50:00Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T04:50:00Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T04:50:00Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T04:50:00Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T04:50:00Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-17T04:50:00Z","vendor":"MoreFun"} [2026-06-17 13:39:47.109] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:50:00Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:50:00Z", "value" => "58"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:50:00Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:50:00Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:50:00Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:50:00Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:50:00Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:50:00Z", "value" => ""}], "sn" => "98250623730001", "uploadTime" => "2026-06-17T04:50:00Z", "vendor" => "MoreFun"} [2026-06-17 13:39:47.110] [INFO ] Extracted versions for 98250623730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:39:47.110] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 13:39:47.110] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 13:39:47.111] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1301.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-06-17 13:39:47.111] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=949.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:39:47.113] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms queue=0.5ms 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-06-17 13:39:47.116] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.6ms idle=2.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-06-17 13:39:47.117] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:39:47.156] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:39:47.158] [DEBUG] QUERY OK db=0.5ms queue=1.2ms idle=349.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 ["419926360000000"] [2026-06-17 13:39:47.159] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:39:47.159] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=42.0ms 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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:39:47.160] [DEBUG] QUERY OK source="address" db=0.3ms idle=3.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` = ?) [409] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:39:47.160] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 13:39:47.161] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 13:39:47.181] [DEBUG] QUERY OK db=19.2ms idle=2.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "319d507c3399110889b4e113ab988eca354748458dd76ee173c4f657ccca4692", 2531, 956, ~U[2026-06-17 13:39:47Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:39:47.182] [INFO ] AutoPushService: Created push log 29788 for MF919 params.zip [2026-06-17 13:39:47.182] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 2531, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:39:47.182] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:39:47.182] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 13:39:47.184] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=20.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.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-06-17 13:39:47.189] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:39:47.217] [DEBUG] QUERY OK db=25.1ms queue=0.1ms idle=9.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a95a9b899137d40cb4f29e0c86eef1d618dd4fef8aea34cb98df41e7c9549cae", 2627, 17947, ~U[2026-06-17 13:39:47Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:39:47.217] [INFO ] AutoPushService: Created push log 29789 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:39:47.217] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 2627, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:39:47.217] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:39:47.217] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 13:39:47.218] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=33.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-06-17 13:39:47.218] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 13:39:47.220] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:39:47.220] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:39:47.221] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:39:47.221] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:47.221] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:39:47.222] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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-06-17 13:39:47.222] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:39:47.222] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 13:39:47.224] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=3.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:39:47.224] [INFO ] Terminal updated: 98250623730001 [2026-06-17 13:39:47.243] [DEBUG] QUERY OK source="tms_terminals" db=18.2ms queue=0.2ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:39:47], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:39:47.244] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=20.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-06-17 13:39:47.245] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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-06-17 13:39:47.245] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 13:39:47.246] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:39:47.259] [DEBUG] QUERY OK source="tms_terminals" db=12.7ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:39:47], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:39:47.284] [DEBUG] QUERY OK db=24.5ms idle=13.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-17T04:50:00Z", ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:39:47.285] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39762, oid: "organization_id", upload_time: "2026-06-17T04:50:00Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]} [2026-06-17 13:39:47.285] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:50:00Z", "value" => "online"} [2026-06-17 13:39:47.317] [DEBUG] QUERY OK db=31.8ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T04:50:00Z", "online", "status", 39762, ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:47.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313760, itemkey: "status", value: "online", timestamp: "2026-06-17T04:50:00Z", message: "Terminal status update", status_log_id: 39762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]}} [2026-06-17 13:39:47.317] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 13:39:47.318] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:50:00Z", "value" => "58"} [2026-06-17 13:39:47.318] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:47.340] [DEBUG] QUERY OK db=21.6ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T04:50:00Z", "58", "battery", 39762, ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:47.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313762, itemkey: "battery", value: "58", timestamp: "2026-06-17T04:50:00Z", message: "Battery level", status_log_id: 39762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]}} [2026-06-17 13:39:47.340] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:50:00Z", "value" => "online"} [2026-06-17 13:39:47.373] [DEBUG] QUERY OK db=32.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T04:50:00Z", "online", "network", 39762, ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:47.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313764, itemkey: "network", value: "online", timestamp: "2026-06-17T04:50:00Z", message: "Network connectivity", status_log_id: 39762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]}} [2026-06-17 13:39:47.373] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 13:39:47.373] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:50:00Z", "value" => "0"} [2026-06-17 13:39:47.374] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:39:47.406] [DEBUG] QUERY OK db=32.1ms queue=0.1ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T04:50:00Z", "0", "cpu", 39762, ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:47.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313766, itemkey: "cpu", value: "0", timestamp: "2026-06-17T04:50:00Z", message: "CPU usage percentage", status_log_id: 39762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]}} [2026-06-17 13:39:47.407] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:50:00Z", "value" => "1.0.0"} [2026-06-17 13:39:47.426] [DEBUG] QUERY OK db=18.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T04:50:00Z", "1.0.0", "parameter_config", 39762, ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:47.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313768, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T04:50:00Z", message: "Current parameters version", status_log_id: 39762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]}} [2026-06-17 13:39:47.427] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:50:00Z", "value" => "1.0.1"} [2026-06-17 13:39:47.444] [DEBUG] QUERY OK db=16.9ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T04:50:00Z", "1.0.1", "emv_config", 39762, ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:47.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313770, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T04:50:00Z", message: "Current EMV config version", status_log_id: 39762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]}} [2026-06-17 13:39:47.444] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:50:00Z", "value" => ""} [2026-06-17 13:39:47.487] [DEBUG] QUERY OK db=41.9ms queue=0.1ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T04:50:00Z", "keys_config", 39762, ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:47.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313772, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T04:50:00Z", message: "Current keys config version", status_log_id: 39762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]}} [2026-06-17 13:39:47.487] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:50:00Z", "value" => ""} [2026-06-17 13:39:47.513] [DEBUG] QUERY OK db=24.8ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T04:50:00Z", "application", 39762, ~N[2026-06-17 13:39:47], ~N[2026-06-17 13:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:39:47.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313774, itemkey: "application", value: nil, timestamp: "2026-06-17T04:50:00Z", message: "Current application version", status_log_id: 39762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:39:47], updated_at: ~N[2026-06-17 13:39:47]}} [2026-06-17 13:39:47.515] [WARN ] Unexpected async result [2026-06-17 13:39:47.515] [WARN ] Unexpected async result [2026-06-17 13:39:47.517] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=1.3ms idle=27.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:39:47.521] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:40:03.092] [INFO ] Received status update for terminal 98250623730001 [2026-06-17 13:40:03.092] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-06-17T04:50:16Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-06-17T04:50:16Z","value":"58"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-06-17T04:50:16Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-06-17T04:50:16Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-06-17T04:50:16Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-06-17T04:50:16Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-06-17T04:50:16Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-06-17T04:50:16Z","value":""}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-06-17T04:50:16Z","vendor":"MoreFun"} [2026-06-17 13:40:03.092] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:50:16Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:50:16Z", "value" => "58"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:50:16Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:50:16Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:50:16Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:50:16Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:50:16Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:50:16Z", "value" => ""}], "sn" => "98250623730001", "uploadTime" => "2026-06-17T04:50:16Z", "vendor" => "MoreFun"} [2026-06-17 13:40:03.092] [INFO ] Extracted versions for 98250623730001: %{application: "", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-06-17 13:40:03.092] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-06-17 13:40:03.092] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-06-17 13:40:03.098] [DEBUG] QUERY OK source="parameter_templates" db=5.2ms queue=0.3ms idle=883.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-06-17 13:40:03.104] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms idle=288.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-06-17 13:40:03.116] [DEBUG] QUERY OK source="parameter_template_values" db=1.7ms idle=15.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-06-17 13:40:03.120] [DEBUG] QUERY OK source="parameter_definitions" db=1.6ms queue=2.4ms idle=12.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-06-17 13:40:03.125] [DEBUG] QUERY OK source="pos_terminal" db=4.3ms 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 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-06-17 13:40:03.161] [DEBUG] QUERY OK source="pos_merchant" db=35.8ms queue=0.1ms idle=5.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [140] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-06-17 13:40:03.165] [DEBUG] QUERY OK db=0.5ms queue=2.9ms idle=352.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 ["419926360000000"] [2026-06-17 13:40:03.166] [INFO ] ParamsZipBuilder: Merchant info for merchantid=419926360000000 - business_name=Kalyan Mart, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-06-17 13:40:03.168] [DEBUG] QUERY OK source="pos_terminal_data" db=2.1ms idle=40.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 ["92636601"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-06-17 13:40:03.169] [DEBUG] QUERY OK source="address" db=0.9ms idle=6.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` = ?) [409] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-06-17 13:40:03.169] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="419926360000000" [2026-06-17 13:40:03.170] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-06-17 13:40:03.201] [DEBUG] QUERY OK db=26.6ms idle=5.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9e41a4c67ac757077125b2dc7da2903196a0b6e0cdf7795ec6bb782dbe2221b1", 260, 956, ~U[2026-06-17 13:40:03Z], "priv/ota/98250623730001/params.zip", 19, %{"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", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-06-17 13:40:03.206] [INFO ] AutoPushService: Created push log 29790 for MF919 params.zip [2026-06-17 13:40:03.206] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 260, "type" => "tms_command", "version" => "1.0.0"} [2026-06-17 13:40:03.208] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:40:03.209] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-06-17 13:40:03.212] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms queue=0.1ms idle=42.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-06-17 13:40:03.235] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-06-17 13:40:03.248] [DEBUG] QUERY OK db=11.9ms idle=23.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "31b34f40953cc15dda678cf4af1fcbb7a47724b893c133dcdbeab856434c9056", 5954, 17947, ~U[2026-06-17 13:40:03Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-06-17 13:40:03.248] [INFO ] AutoPushService: Created push log 29791 for MF919 l3config.zip (version: 1.0.1) [2026-06-17 13:40:03.248] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 5954, "type" => "tms_command", "version" => "1.0.1"} [2026-06-17 13:40:03.249] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-06-17 13:40:03.249] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-06-17 13:40:03.260] [DEBUG] QUERY OK source="config_file_versions" db=10.6ms idle=13.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-06-17 13:40:03.260] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-06-17 13:40:03.265] [DEBUG] QUERY OK source="tms_terminals" db=5.2ms idle=11.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-06-17 13:40:03.267] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-06-17 13:40:03.274] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-06-17 13:40:03.276] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:40:03.276] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-06-17 13:40:03.277] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=17.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-06-17 13:40:03.278] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-06-17 13:40:03.278] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-06-17 13:40:03.284] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms idle=13.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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:40:03.284] [INFO ] Terminal updated: 98250623730001 [2026-06-17 13:40:03.292] [DEBUG] QUERY OK source="tms_terminals" db=8.1ms queue=0.1ms idle=6.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:40:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:40:03.296] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=9.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-06-17 13:40:03.300] [DEBUG] QUERY OK source="config_file_versions" db=4.0ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-06-17 13:40:03.301] [DEBUG] VersionComplianceChecker: 98250623730001 — all versions compliant [2026-06-17 13:40:03.306] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 13:40:03.330] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=6.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:40:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:40:03.363] [DEBUG] QUERY OK db=32.3ms queue=0.1ms idle=23.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-06-17T04:50:16Z", ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:40:03.363] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39764, oid: "organization_id", upload_time: "2026-06-17T04:50:16Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]} [2026-06-17 13:40:03.364] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-06-17T04:50:16Z", "value" => "online"} [2026-06-17 13:40:03.384] [DEBUG] QUERY OK db=19.7ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-06-17T04:50:16Z", "online", "status", 39764, ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:40:03.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313776, itemkey: "status", value: "online", timestamp: "2026-06-17T04:50:16Z", message: "Terminal status update", status_log_id: 39764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]}} [2026-06-17 13:40:03.385] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-06-17 13:40:03.386] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:40:03.405] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-06-17T04:50:16Z", "value" => "58"} [2026-06-17 13:40:03.429] [DEBUG] QUERY OK db=23.3ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-06-17T04:50:16Z", "58", "battery", 39764, ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:40:03.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313778, itemkey: "battery", value: "58", timestamp: "2026-06-17T04:50:16Z", message: "Battery level", status_log_id: 39764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]}} [2026-06-17 13:40:03.430] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-06-17T04:50:16Z", "value" => "online"} [2026-06-17 13:40:03.464] [DEBUG] QUERY OK db=28.5ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-06-17T04:50:16Z", "online", "network", 39764, ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:40:03.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313780, itemkey: "network", value: "online", timestamp: "2026-06-17T04:50:16Z", message: "Network connectivity", status_log_id: 39764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]}} [2026-06-17 13:40:03.464] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-06-17 13:40:03.464] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-06-17T04:50:16Z", "value" => "0"} [2026-06-17 13:40:03.464] [INFO ] Terminal 98250623730001 status changed to: online. Updated grid with 39 terminals [2026-06-17 13:40:03.484] [DEBUG] QUERY OK db=19.4ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-06-17T04:50:16Z", "0", "cpu", 39764, ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:40:03.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313782, itemkey: "cpu", value: "0", timestamp: "2026-06-17T04:50:16Z", message: "CPU usage percentage", status_log_id: 39764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]}} [2026-06-17 13:40:03.487] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-06-17T04:50:16Z", "value" => "1.0.0"} [2026-06-17 13:40:03.527] [DEBUG] QUERY OK db=37.2ms queue=0.3ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-06-17T04:50:16Z", "1.0.0", "parameter_config", 39764, ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:40:03.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313784, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-06-17T04:50:16Z", message: "Current parameters version", status_log_id: 39764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]}} [2026-06-17 13:40:03.529] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-06-17T04:50:16Z", "value" => "1.0.1"} [2026-06-17 13:40:03.548] [DEBUG] QUERY OK db=13.3ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-06-17T04:50:16Z", "1.0.1", "emv_config", 39764, ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:40:03.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313786, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-06-17T04:50:16Z", message: "Current EMV config version", status_log_id: 39764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]}} [2026-06-17 13:40:03.550] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-06-17T04:50:16Z", "value" => ""} [2026-06-17 13:40:03.585] [DEBUG] QUERY OK db=28.0ms queue=0.3ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-06-17T04:50:16Z", "keys_config", 39764, ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:40:03.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313789, itemkey: "keys_config", value: nil, timestamp: "2026-06-17T04:50:16Z", message: "Current keys config version", status_log_id: 39764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]}} [2026-06-17 13:40:03.588] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-06-17T04:50:16Z", "value" => ""} [2026-06-17 13:40:03.617] [DEBUG] QUERY OK db=25.0ms queue=3.1ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current application version", "2026-06-17T04:50:16Z", "application", 39764, ~N[2026-06-17 13:40:03], ~N[2026-06-17 13:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:40:03.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313790, itemkey: "application", value: nil, timestamp: "2026-06-17T04:50:16Z", message: "Current application version", status_log_id: 39764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:40:03], updated_at: ~N[2026-06-17 13:40:03]}} [2026-06-17 13:40:03.619] [WARN ] Unexpected async result [2026-06-17 13:40:03.619] [WARN ] Unexpected async result [2026-06-17 13:40:03.621] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=35.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 13:40:03.629] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 13:43:11.476] [INFO ] Running offline device check... [2026-06-17 13:43:11.476] [INFO ] Starting offline device check... [2026-06-17 13:43:11.478] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=1126.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:679 [2026-06-17 13:43:11.484] [INFO ] Starting scheduled rule validation [2026-06-17 13:43:11.485] [DEBUG] Validating missing assignments [2026-06-17 13:43:11.493] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.0ms queue=1.0ms idle=772.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:694 [2026-06-17 13:43:11.497] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=0.3ms 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-06-17 13:43:11.498] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=0.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-06-17 13:43:11.498] [DEBUG] Re-applied 0 rules during validation [2026-06-17 13:43:11.498] [DEBUG] Validating invalid assignments [2026-06-17 13:43:11.499] [DEBUG] Validating rule consistency [2026-06-17 13:43:11.499] [DEBUG] Updating group terminal counts [2026-06-17 13:43:11.499] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.2ms idle=0.9ms 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-06-17 13:43:11.501] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.5ms idle=0.1ms 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-06-17 13:43:11.501] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms queue=0.2ms idle=16.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:694 [2026-06-17 13:43:11.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.507] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.508] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.508] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.3ms idle=0.7ms 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-06-17 13:43:11.509] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.511] [DEBUG] QUERY OK source="terminal_group_rules" db=1.2ms queue=0.7ms 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-06-17 13:43:11.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.512] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=0.5ms idle=0.1ms 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-06-17 13:43:11.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.514] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=1.5ms idle=0.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-06-17 13:43:11.516] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.9ms queue=0.4ms 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-06-17 13:43:11.517] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms queue=0.4ms idle=0.2ms 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-06-17 13:43:11.517] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 13:43:11.517] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 13:43:11.518] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.519] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.534] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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:694 [2026-06-17 13:43:11.543] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=7.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:694 [2026-06-17 13:43:11.544] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.545] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.546] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.547] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.557] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.558] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.558] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms 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:694 [2026-06-17 13:43:11.564] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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:694 [2026-06-17 13:43:11.569] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.572] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.574] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.575] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.576] [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:694 [2026-06-17 13:43:11.577] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.578] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.579] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.580] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:43:11.580] [INFO ] Offline device check completed. Found 36 offline devices, updated 0 statuses. [2026-06-17 13:43:11.580] [INFO ] Offline device check completed successfully [2026-06-17 13:46:04.068] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 13:46:04.068] [INFO ] Incoming JSON payload: {"oid":"e3b7f467-a854-4421-b30a-1b3b3214b213","sn":"98251226730001","uploadTime":"2026-06-17T21:49:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"ram_free_mb","value":"947","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T21:49:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T21:49:17Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 13:46:04.069] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e3b7f467-a854-4421-b30a-1b3b3214b213", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T21:49:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T21:49:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T21:49:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T21:49:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T21:49:17Z", "value" => "947"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T21:49:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T21:49:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T21:49:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T21:49:17Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T21:49:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T21:49:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T21:49:17Z", "vendor" => "morefun"} [2026-06-17 13:46:04.069] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 13:46:04.069] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 13:46:04.069] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 13:46:04.072] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=1257.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-06-17 13:46:04.072] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=907.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-06-17 13:46:04.072] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 13:46:04.073] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 13:46:04.073] [INFO ] Terminal updated: 98251226730001 [2026-06-17 13:46:04.109] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 13:46:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 13:46:04.109] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 13:46:04.111] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=36.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:629 [2026-06-17 13:46:04.130] [DEBUG] QUERY OK source="tms_terminals" db=18.6ms queue=0.2ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:46:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 13:46:04.149] [DEBUG] QUERY OK db=17.9ms idle=19.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e3b7f467-a854-4421-b30a-1b3b3214b213", "2026-06-17T21:49:17Z", ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 13:46:04.149] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39765, oid: "e3b7f467-a854-4421-b30a-1b3b3214b213", upload_time: "2026-06-17T21:49:17Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]} [2026-06-17 13:46:04.149] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T21:49:17Z", "value" => "morefun"} [2026-06-17 13:46:04.215] [DEBUG] QUERY OK db=23.7ms queue=41.4ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "morefun", "vendor", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313791, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.216] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T21:49:17Z", "value" => "kiosk_launcher"} [2026-06-17 13:46:04.268] [DEBUG] QUERY OK db=10.9ms queue=41.5ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "kiosk_launcher", "model", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313793, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.269] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T21:49:17Z", "value" => "1.0"} [2026-06-17 13:46:04.290] [DEBUG] QUERY OK db=20.5ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "1.0", "app_version", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313794, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.290] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T21:49:17Z", "value" => "13"} [2026-06-17 13:46:04.333] [DEBUG] QUERY OK db=42.4ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "13", "android_version", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313796, itemkey: "android_version", value: "13", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.334] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T21:49:17Z", "value" => "947"} [2026-06-17 13:46:04.360] [DEBUG] QUERY OK db=26.0ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "947", "ram_free_mb", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.361] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313798, itemkey: "ram_free_mb", value: "947", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.361] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T21:49:17Z", "value" => "WIFI"} [2026-06-17 13:46:04.383] [DEBUG] QUERY OK db=20.7ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "WIFI", "network_type", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313800, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.384] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T21:49:17Z", "value" => "true"} [2026-06-17 13:46:04.428] [DEBUG] QUERY OK db=42.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "true", "kiosk_active", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313802, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.428] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T21:49:17Z", "value" => ""} [2026-06-17 13:46:04.454] [DEBUG] QUERY OK db=25.0ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T21:49:17Z", "sim_operator", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313804, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.455] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"} [2026-06-17 13:46:04.486] [DEBUG] QUERY OK db=31.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "UNKNOWN", "sim_number", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313806, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.488] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"} [2026-06-17 13:46:04.529] [DEBUG] QUERY OK db=40.6ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "UNKNOWN", "sim_iccid", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313808, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.529] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"} [2026-06-17 13:46:04.557] [DEBUG] QUERY OK db=27.4ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "UNKNOWN", "sim_imsi", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313810, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.558] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"} [2026-06-17 13:46:04.587] [DEBUG] QUERY OK db=29.0ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "UNKNOWN", "sim_iccid2", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313812, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.587] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T21:49:17Z", "value" => "UNKNOWN"} [2026-06-17 13:46:04.608] [DEBUG] QUERY OK db=19.6ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "UNKNOWN", "sim_imsi2", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313814, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.609] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T21:49:17Z", "value" => "6"} [2026-06-17 13:46:04.690] [DEBUG] QUERY OK db=80.6ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "6", "data_usage_mb", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313816, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.690] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T21:49:17Z", "value" => "0"} [2026-06-17 13:46:04.723] [DEBUG] QUERY OK db=32.5ms idle=82.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "0", "mobile_data_mb", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313818, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:46:04.725] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T21:49:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 13:46:04.773] [DEBUG] QUERY OK db=46.8ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T21:49:17Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39765, ~N[2026-06-17 13:46:04], ~N[2026-06-17 13:46:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 13:46:04.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313820, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T21:49:17Z", message: nil, status_log_id: 39765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 13:46:04], updated_at: ~N[2026-06-17 13:46:04]}} [2026-06-17 13:48:11.581] [INFO ] Running offline device check... [2026-06-17 13:48:11.581] [INFO ] Starting offline device check... [2026-06-17 13:48:11.583] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=791.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:679 [2026-06-17 13:48:11.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms queue=0.2ms idle=77.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:694 [2026-06-17 13:48:11.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=7.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:694 [2026-06-17 13:48:11.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.596] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.597] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.597] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.598] [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:694 [2026-06-17 13:48:11.598] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.599] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.600] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.605] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.612] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=7.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:694 [2026-06-17 13:48:11.617] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.618] [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:694 [2026-06-17 13:48:11.619] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.627] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms queue=0.1ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.629] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.630] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.632] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.632] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.644] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=10.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:694 [2026-06-17 13:48:11.645] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.652] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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:694 [2026-06-17 13:48:11.657] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.658] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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:694 [2026-06-17 13:48:11.663] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.663] [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:694 [2026-06-17 13:48:11.664] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.665] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.669] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:48:11.669] [INFO ] Offline device check completed. Found 36 offline devices, updated 0 statuses. [2026-06-17 13:48:11.670] [INFO ] Offline device check completed successfully [2026-06-17 13:53:11.484] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 13:53:11.486] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.7ms idle=259.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-06-17 13:53:11.487] [DEBUG] QUERY OK source="filter_usage" db=0.6ms idle=211.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-06-17 13:53:11.487] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 13:53:11.670] [INFO ] Running offline device check... [2026-06-17 13:53:11.670] [INFO ] Starting offline device check... [2026-06-17 13:53:11.672] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=184.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:679 [2026-06-17 13:53:11.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=186.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:694 [2026-06-17 13:53:11.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.688] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.690] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.692] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.693] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.695] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.700] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.701] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.740] [DEBUG] QUERY OK source="tms_terminals" db=31.7ms idle=6.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:53:11], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 13:53:11.740] [INFO ] Terminal 98251226730002 back online [2026-06-17 13:53:11.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.6ms idle=32.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:694 [2026-06-17 13:53:11.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.746] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.747] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.757] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.781] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=10.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:53:11], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 13:53:11.781] [INFO ] Terminal 98250623730001 back online [2026-06-17 13:53:11.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=24.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:694 [2026-06-17 13:53:11.784] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.787] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.788] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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:694 [2026-06-17 13:53:11.800] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=12.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:694 [2026-06-17 13:53:11.801] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=8.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:694 [2026-06-17 13:53:11.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.818] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms 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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.828] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.830] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.835] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.837] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.837] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:53:11.837] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 13:53:11.838] [INFO ] Offline device check completed successfully [2026-06-17 13:58:11.838] [INFO ] Running offline device check... [2026-06-17 13:58:11.838] [INFO ] Starting offline device check... [2026-06-17 13:58:11.840] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=760.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:679 [2026-06-17 13:58:11.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms idle=177.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:694 [2026-06-17 13:58:11.855] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.858] [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:694 [2026-06-17 13:58:11.859] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.860] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.861] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.868] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.873] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.890] [DEBUG] QUERY OK source="tms_terminals" db=9.3ms idle=7.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:58:11], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 13:58:11.890] [INFO ] Terminal 98251226730002 back online [2026-06-17 13:58:11.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms idle=10.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:694 [2026-06-17 13:58:11.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.903] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.915] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.922] [DEBUG] QUERY OK source="tms_terminals" db=7.0ms idle=11.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:58:11], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 13:58:11.922] [INFO ] Terminal 98250623730001 back online [2026-06-17 13:58:11.924] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.925] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.927] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.929] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.951] [DEBUG] QUERY OK source="tms_terminals" db=8.1ms idle=13.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 13:58:11], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 13:58:11.951] [INFO ] Terminal 98251226730001 back online [2026-06-17 13:58:11.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=9.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:694 [2026-06-17 13:58:11.953] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.966] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.967] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.1ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.975] [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:694 [2026-06-17 13:58:11.976] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.977] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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:694 [2026-06-17 13:58:11.982] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 13:58:11.982] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 13:58:11.983] [INFO ] Offline device check completed successfully [2026-06-17 14:03:11.983] [INFO ] Running offline device check... [2026-06-17 14:03:11.983] [INFO ] Starting offline device check... [2026-06-17 14:03:11.984] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1129.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:679 [2026-06-17 14:03:11.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=148.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:694 [2026-06-17 14:03:11.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:11.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:11.996] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:11.997] [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:694 [2026-06-17 14:03:11.997] [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:694 [2026-06-17 14:03:11.998] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:11.998] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:11.999] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.004] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.009] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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:694 [2026-06-17 14:03:12.023] [DEBUG] QUERY OK source="tms_terminals" db=14.0ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:03:12], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:03:12.023] [INFO ] Terminal 98251226730002 back online [2026-06-17 14:03:12.027] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=14.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:694 [2026-06-17 14:03:12.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.030] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.031] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.054] [DEBUG] QUERY OK source="tms_terminals" db=15.6ms idle=8.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:03:12], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:03:12.055] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:03:12.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms queue=0.4ms idle=16.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:694 [2026-06-17 14:03:12.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.060] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.062] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.062] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.0ms 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:694 [2026-06-17 14:03:12.087] [DEBUG] QUERY OK source="tms_terminals" db=13.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:03:12], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:03:12.088] [INFO ] Terminal 98251226730001 back online [2026-06-17 14:03:12.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.089] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.6ms 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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.100] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.105] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.106] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.112] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.114] [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:694 [2026-06-17 14:03:12.115] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.116] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.118] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:03:12.119] [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:694 [2026-06-17 14:03:12.119] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 14:03:12.120] [INFO ] Offline device check completed successfully [2026-06-17 14:08:11.488] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 14:08:11.491] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=876.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-06-17 14:08:11.492] [DEBUG] QUERY OK source="filter_usage" db=0.6ms idle=627.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-06-17 14:08:11.492] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 14:08:12.120] [INFO ] Running offline device check... [2026-06-17 14:08:12.120] [INFO ] Starting offline device check... [2026-06-17 14:08:12.121] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=627.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:679 [2026-06-17 14:08:12.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=506.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:694 [2026-06-17 14:08:12.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.133] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.133] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.134] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.135] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.135] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.137] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.138] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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:694 [2026-06-17 14:08:12.166] [DEBUG] QUERY OK source="tms_terminals" db=17.0ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:08:12], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:08:12.166] [INFO ] Terminal 98251226730002 back online [2026-06-17 14:08:12.170] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=17.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:694 [2026-06-17 14:08:12.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.172] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.173] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.216] [DEBUG] QUERY OK source="tms_terminals" db=34.7ms idle=8.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:08:12], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:08:12.216] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:08:12.218] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=35.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:694 [2026-06-17 14:08:12.219] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.220] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.221] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.222] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.246] [DEBUG] QUERY OK source="tms_terminals" db=11.3ms queue=0.1ms idle=12.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:08:12], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:08:12.247] [INFO ] Terminal 98251226730001 back online [2026-06-17 14:08:12.247] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=12.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:694 [2026-06-17 14:08:12.250] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.258] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms 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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.259] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.262] [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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.264] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.270] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.274] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.275] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.276] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.277] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.278] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:08:12.278] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 14:08:12.278] [INFO ] Offline device check completed successfully [2026-06-17 14:13:12.279] [INFO ] Running offline device check... [2026-06-17 14:13:12.279] [INFO ] Starting offline device check... [2026-06-17 14:13:12.280] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1408.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:679 [2026-06-17 14:13:12.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.1ms idle=905.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:694 [2026-06-17 14:13:12.305] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.6ms queue=0.6ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=13.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.308] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.311] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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:694 [2026-06-17 14:13:12.314] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.317] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.319] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.336] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=17.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:694 [2026-06-17 14:13:12.346] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.367] [DEBUG] QUERY OK source="tms_terminals" db=20.6ms idle=9.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:13:12], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:13:12.368] [INFO ] Terminal 98251226730002 back online [2026-06-17 14:13:12.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=21.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:694 [2026-06-17 14:13:12.376] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=7.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:694 [2026-06-17 14:13:12.377] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.378] [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:694 [2026-06-17 14:13:12.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.412] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=7.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:13:12], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:13:12.412] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:13:12.414] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.415] [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:694 [2026-06-17 14:13:12.416] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.417] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.418] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.429] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.455] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms idle=11.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:13:12], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:13:12.456] [INFO ] Terminal 98251226730001 back online [2026-06-17 14:13:12.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=26.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=7.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:694 [2026-06-17 14:13:12.472] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms 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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.480] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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:694 [2026-06-17 14:13:12.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.487] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.488] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.491] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.492] [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:694 [2026-06-17 14:13:12.492] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:13:12.493] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 14:13:12.493] [INFO ] Offline device check completed successfully [2026-06-17 14:18:12.493] [INFO ] Running offline device check... [2026-06-17 14:18:12.493] [INFO ] Starting offline device check... [2026-06-17 14:18:12.494] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1379.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:679 [2026-06-17 14:18:12.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=379.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:694 [2026-06-17 14:18:12.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.504] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.506] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.506] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.507] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.508] [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:694 [2026-06-17 14:18:12.508] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.509] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.516] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.548] [DEBUG] QUERY OK source="tms_terminals" db=25.7ms queue=0.2ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:18:12], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:18:12.548] [INFO ] Terminal 98251226730002 back online [2026-06-17 14:18:12.552] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=26.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:694 [2026-06-17 14:18:12.553] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.554] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.554] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.587] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=8.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:18:12], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:18:12.587] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:18:12.588] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=24.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:694 [2026-06-17 14:18:12.589] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.590] [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:694 [2026-06-17 14:18:12.592] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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:694 [2026-06-17 14:18:12.627] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=10.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:18:12], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:18:12.627] [INFO ] Terminal 98251226730001 back online [2026-06-17 14:18:12.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.629] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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:694 [2026-06-17 14:18:12.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.638] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.640] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.644] [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:694 [2026-06-17 14:18:12.645] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.645] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.647] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms 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:694 [2026-06-17 14:18:12.647] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.648] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:18:12.648] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 14:18:12.648] [INFO ] Offline device check completed successfully [2026-06-17 14:23:11.493] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 14:23:11.494] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=604.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-06-17 14:23:11.495] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=591.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-06-17 14:23:11.495] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 14:23:12.649] [INFO ] Running offline device check... [2026-06-17 14:23:12.649] [INFO ] Starting offline device check... [2026-06-17 14:23:12.650] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1154.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:679 [2026-06-17 14:23:12.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=746.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:694 [2026-06-17 14:23:12.661] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=6.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:694 [2026-06-17 14:23:12.662] [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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.663] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.664] [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:694 [2026-06-17 14:23:12.664] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.665] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.666] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.667] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.668] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.673] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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:694 [2026-06-17 14:23:12.704] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:23:12], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:23:12.704] [INFO ] Terminal 98251226730002 back online [2026-06-17 14:23:12.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms queue=0.1ms idle=25.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:694 [2026-06-17 14:23:12.710] [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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.710] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.711] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.719] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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:694 [2026-06-17 14:23:12.749] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:23:12], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:23:12.749] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:23:12.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=30.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:694 [2026-06-17 14:23:12.751] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.752] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.754] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.754] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.788] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=10.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:23:12], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:23:12.789] [INFO ] Terminal 98251226730001 back online [2026-06-17 14:23:12.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=24.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:694 [2026-06-17 14:23:12.790] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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:694 [2026-06-17 14:23:12.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.799] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.801] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.805] [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:694 [2026-06-17 14:23:12.806] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.806] [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:694 [2026-06-17 14:23:12.808] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.809] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.809] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:23:12.809] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 14:23:12.810] [INFO ] Offline device check completed successfully [2026-06-17 14:28:12.810] [INFO ] Running offline device check... [2026-06-17 14:28:12.810] [INFO ] Starting offline device check... [2026-06-17 14:28:12.812] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=1159.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:679 [2026-06-17 14:28:12.818] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=160.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:694 [2026-06-17 14:28:12.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.825] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.826] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.826] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28: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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.828] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.828] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.829] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.832] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.835] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.836] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.842] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.854] [DEBUG] QUERY OK source="tms_terminals" db=11.0ms idle=7.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:28:12], 13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:28:12.854] [INFO ] Terminal 98251226730002 back online [2026-06-17 14:28:12.858] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=12.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:694 [2026-06-17 14:28:12.860] [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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.860] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.861] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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:694 [2026-06-17 14:28:12.895] [DEBUG] QUERY OK source="tms_terminals" db=24.9ms idle=9.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:28:12], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:28:12.895] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:28:12.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=25.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:694 [2026-06-17 14:28:12.898] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.899] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.901] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.901] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.912] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.936] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms queue=0.1ms idle=11.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:28:12], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:28:12.936] [INFO ] Terminal 98251226730001 back online [2026-06-17 14:28:12.938] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=24.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:694 [2026-06-17 14:28:12.939] [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:694 [2026-06-17 14:28:12.945] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.949] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.951] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.957] [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:694 [2026-06-17 14:28:12.958] [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:694 [2026-06-17 14:28:12.959] [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:694 [2026-06-17 14:28:12.960] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.961] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:28:12.963] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms 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:694 [2026-06-17 14:28:12.963] [INFO ] Offline device check completed. Found 36 offline devices, updated 3 statuses. [2026-06-17 14:28:12.963] [INFO ] Offline device check completed successfully [2026-06-17 14:33:02.144] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:33:02.144] [INFO ] Incoming JSON payload: {"oid":"ece2e5de-3b50-42a1-aae3-e3cc2b211371","sn":"98251226730002","uploadTime":"2026-06-17T14:32:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"ram_free_mb","value":"814","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:32:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:32:12Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 14:33:02.145] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ece2e5de-3b50-42a1-aae3-e3cc2b211371", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:32:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:32:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:32:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:32:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:32:12Z", "value" => "814"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:32:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:32:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:32:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:32:12Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:32:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:32:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:32:12Z", "vendor" => "morefun"} [2026-06-17 14:33:02.145] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:33:02.147] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:33:02.147] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:33:02.148] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1156.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-06-17 14:33:02.149] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=738.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-06-17 14:33:02.149] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:33:02.150] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:33:02.238] [DEBUG] QUERY OK source="tms_terminals" db=45.7ms queue=41.5ms idle=2.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-06-17 14:33:02], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:37 [2026-06-17 14:33:02.238] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:33:02.238] [INFO ] Event published: terminal_updated [2026-06-17 14:33:02.239] [DEBUG] Processing terminal event: terminal_updated [2026-06-17 14:33:02.239] [INFO ] Processing terminal_updated event for terminal 13 [2026-06-17 14:33:02.240] [INFO ] Changed fields: [:vendor, :model] [2026-06-17 14:33:02.242] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=3.1ms idle=88.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-06-17 14:33:02], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-06-17 14:33:02.248] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms queue=2.2ms idle=4.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` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-06-17 14:33:02.252] [DEBUG] QUERY OK source="terminal_group_rules" db=2.8ms idle=0.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-06-17 14:33:02.252] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-06-17 14:33:02.295] [DEBUG] QUERY OK source="tms_terminals" db=9.9ms queue=42.3ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, ~N[2026-06-17 14:33:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:33:02.295] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:33:02.297] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=43.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:33:02.373] [DEBUG] QUERY OK source="tms_terminals" db=32.6ms queue=43.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:33:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:33:02.401] [DEBUG] QUERY OK db=26.6ms idle=77.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ece2e5de-3b50-42a1-aae3-e3cc2b211371", "2026-06-17T14:32:12Z", ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:33:02.402] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39767, oid: "ece2e5de-3b50-42a1-aae3-e3cc2b211371", upload_time: "2026-06-17T14:32:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]} [2026-06-17 14:33:02.402] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:32:12Z", "value" => "morefun"} [2026-06-17 14:33:02.422] [DEBUG] QUERY OK db=20.2ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "morefun", "vendor", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313823, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.423] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:32:12Z", "value" => "kiosk_launcher"} [2026-06-17 14:33:02.440] [DEBUG] QUERY OK db=15.0ms queue=0.1ms idle=8.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "kiosk_launcher", "model", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313825, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.440] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:32:12Z", "value" => "1.0"} [2026-06-17 14:33:02.471] [DEBUG] QUERY OK db=30.9ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "1.0", "app_version", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313827, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.472] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:32:12Z", "value" => "13"} [2026-06-17 14:33:02.509] [DEBUG] QUERY OK db=35.7ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "13", "android_version", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313829, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.509] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:32:12Z", "value" => "814"} [2026-06-17 14:33:02.524] [DEBUG] QUERY OK db=14.8ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "814", "ram_free_mb", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313831, itemkey: "ram_free_mb", value: "814", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.525] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:32:12Z", "value" => "WIFI"} [2026-06-17 14:33:02.552] [DEBUG] QUERY OK db=25.3ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "WIFI", "network_type", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313833, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.552] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:32:12Z", "value" => "true"} [2026-06-17 14:33:02.596] [DEBUG] QUERY OK db=43.8ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "true", "kiosk_active", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313835, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.597] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:32:12Z", "value" => ""} [2026-06-17 14:33:02.612] [DEBUG] QUERY OK db=14.7ms queue=0.5ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:32:12Z", "sim_operator", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313837, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.613] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"} [2026-06-17 14:33:02.632] [DEBUG] QUERY OK db=18.8ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "UNKNOWN", "sim_number", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313839, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.636] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"} [2026-06-17 14:33:02.677] [DEBUG] QUERY OK db=40.6ms queue=0.3ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "UNKNOWN", "sim_iccid", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313841, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.677] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"} [2026-06-17 14:33:02.696] [DEBUG] QUERY OK db=15.9ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "UNKNOWN", "sim_imsi", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313843, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.697] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"} [2026-06-17 14:33:02.727] [DEBUG] QUERY OK db=29.7ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "UNKNOWN", "sim_iccid2", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313845, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.727] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:32:12Z", "value" => "UNKNOWN"} [2026-06-17 14:33:02.772] [DEBUG] QUERY OK db=42.4ms queue=2.1ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "UNKNOWN", "sim_imsi2", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313847, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.774] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:32:12Z", "value" => "31"} [2026-06-17 14:33:02.798] [DEBUG] QUERY OK db=23.0ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "31", "data_usage_mb", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313849, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.798] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:32:12Z", "value" => "0"} [2026-06-17 14:33:02.828] [DEBUG] QUERY OK db=29.1ms queue=0.5ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "0", "mobile_data_mb", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313851, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:02.829] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:32:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:33:02.873] [DEBUG] QUERY OK db=42.7ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:32:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39767, ~N[2026-06-17 14:33:02], ~N[2026-06-17 14:33:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:33:02.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313853, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:32:12Z", message: nil, status_log_id: 39767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:33:02], updated_at: ~N[2026-06-17 14:33:02]}} [2026-06-17 14:33:12.964] [INFO ] Running offline device check... [2026-06-17 14:33:17.242] [INFO ] Starting offline device check... [2026-06-17 14:33:17.244] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1331.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:679 [2026-06-17 14:33:17.250] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=789.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:694 [2026-06-17 14:33:17.254] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.255] [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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.256] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.257] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.257] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.258] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.258] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.259] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.260] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.264] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.264] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.269] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.275] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.276] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.276] [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:694 [2026-06-17 14:33:17.285] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.346] [DEBUG] QUERY OK source="tms_terminals" db=19.7ms queue=41.2ms idle=8.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:33:17], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:33:17.346] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:33:17.348] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=61.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:694 [2026-06-17 14:33:17.349] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.350] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.351] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.352] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.376] [DEBUG] QUERY OK source="tms_terminals" db=14.0ms idle=10.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:33:17], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:33:17.376] [INFO ] Terminal 98251226730001 back online [2026-06-17 14:33:17.377] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=14.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:694 [2026-06-17 14:33:17.377] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.383] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.386] [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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.387] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.388] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.393] [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:694 [2026-06-17 14:33:17.394] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.394] [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:694 [2026-06-17 14:33:17.396] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.396] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.397] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:33:17.397] [INFO ] Offline device check completed. Found 36 offline devices, updated 2 statuses. [2026-06-17 14:33:17.397] [INFO ] Offline device check completed successfully [2026-06-17 14:34:02.264] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:34:02.265] [INFO ] Incoming JSON payload: {"oid":"e6f61633-e73a-4d5b-aba5-63d70b5ae92c","sn":"98251226730002","uploadTime":"2026-06-17T14:33:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"ram_free_mb","value":"809","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:33:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:33:12Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 14:34:02.266] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e6f61633-e73a-4d5b-aba5-63d70b5ae92c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:33:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:33:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:33:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:33:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:33:12Z", "value" => "809"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:33:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:33:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:33:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:33:12Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:33:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:33:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:33:12Z", "vendor" => "morefun"} [2026-06-17 14:34:02.266] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:34:02.266] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:34:02.266] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:34:02.270] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=1274.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-06-17 14:34:02.271] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=701.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-06-17 14:34:02.272] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:34:02.273] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:34:02.273] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:34:02.302] [DEBUG] QUERY OK source="tms_terminals" db=27.3ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:34:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:34:02.302] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:34:02.303] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=29.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:34:02.320] [DEBUG] QUERY OK source="tms_terminals" db=17.3ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:34:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:34:02.351] [DEBUG] QUERY OK db=30.3ms idle=18.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "e6f61633-e73a-4d5b-aba5-63d70b5ae92c", "2026-06-17T14:33:12Z", ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:34:02.352] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39769, oid: "e6f61633-e73a-4d5b-aba5-63d70b5ae92c", upload_time: "2026-06-17T14:33:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]} [2026-06-17 14:34:02.352] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:33:12Z", "value" => "morefun"} [2026-06-17 14:34:02.388] [DEBUG] QUERY OK db=36.4ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "morefun", "vendor", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313855, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.389] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:33:12Z", "value" => "kiosk_launcher"} [2026-06-17 14:34:02.419] [DEBUG] QUERY OK db=29.1ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "kiosk_launcher", "model", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313857, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.419] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:33:12Z", "value" => "1.0"} [2026-06-17 14:34:02.449] [DEBUG] QUERY OK db=29.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "1.0", "app_version", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313859, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.450] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:33:12Z", "value" => "13"} [2026-06-17 14:34:02.483] [DEBUG] QUERY OK db=32.6ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "13", "android_version", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313861, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.486] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:33:12Z", "value" => "809"} [2026-06-17 14:34:02.512] [DEBUG] QUERY OK db=25.4ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "809", "ram_free_mb", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313863, itemkey: "ram_free_mb", value: "809", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.516] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:33:12Z", "value" => "WIFI"} [2026-06-17 14:34:02.542] [DEBUG] QUERY OK db=25.3ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "WIFI", "network_type", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313865, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.542] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:33:12Z", "value" => "true"} [2026-06-17 14:34:02.587] [DEBUG] QUERY OK db=44.2ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "true", "kiosk_active", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313867, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.587] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:33:12Z", "value" => ""} [2026-06-17 14:34:02.604] [DEBUG] QUERY OK db=16.2ms idle=13.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:33:12Z", "sim_operator", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313869, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.605] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"} [2026-06-17 14:34:02.681] [DEBUG] QUERY OK db=75.8ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "UNKNOWN", "sim_number", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313871, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.682] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"} [2026-06-17 14:34:02.708] [DEBUG] QUERY OK db=25.5ms idle=78.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "UNKNOWN", "sim_iccid", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313873, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.708] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"} [2026-06-17 14:34:02.721] [DEBUG] QUERY OK db=12.4ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "UNKNOWN", "sim_imsi", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313875, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.725] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"} [2026-06-17 14:34:02.752] [DEBUG] QUERY OK db=27.1ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "UNKNOWN", "sim_iccid2", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313877, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.752] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:33:12Z", "value" => "UNKNOWN"} [2026-06-17 14:34:02.789] [DEBUG] QUERY OK db=36.0ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "UNKNOWN", "sim_imsi2", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313879, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.789] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:33:12Z", "value" => "31"} [2026-06-17 14:34:02.812] [DEBUG] QUERY OK db=22.2ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "31", "data_usage_mb", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313881, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.812] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:33:12Z", "value" => "0"} [2026-06-17 14:34:02.831] [DEBUG] QUERY OK db=18.3ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "0", "mobile_data_mb", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313883, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:34:02.831] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:33:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:34:02.861] [DEBUG] QUERY OK db=28.6ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:33:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39769, ~N[2026-06-17 14:34:02], ~N[2026-06-17 14:34:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:34:02.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313885, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:33:12Z", message: nil, status_log_id: 39769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:34:02], updated_at: ~N[2026-06-17 14:34:02]}} [2026-06-17 14:35:02.685] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:35:02.685] [INFO ] Incoming JSON payload: {"oid":"96755ca9-53d4-432f-9e77-1e2632afd55d","sn":"98251226730002","uploadTime":"2026-06-17T14:34:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"ram_free_mb","value":"814","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:34:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:34:12Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 14:35:02.689] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "96755ca9-53d4-432f-9e77-1e2632afd55d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:34:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:34:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:34:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:34:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:34:12Z", "value" => "814"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:34:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:34:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:34:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:34:12Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:34:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:34:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:34:12Z", "vendor" => "morefun"} [2026-06-17 14:35:02.689] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:35:02.692] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:35:02.692] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:35:02.695] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=1697.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 14:35:02.695] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=969.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-06-17 14:35:02.695] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:35:02.697] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:35:02.697] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:35:02.723] [DEBUG] QUERY OK source="tms_terminals" db=25.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:35:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:35:02.723] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:35:02.726] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:35:02.750] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:35:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:35:02.763] [DEBUG] QUERY OK db=11.7ms queue=0.1ms idle=21.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "96755ca9-53d4-432f-9e77-1e2632afd55d", "2026-06-17T14:34:12Z", ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:35:02.763] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39771, oid: "96755ca9-53d4-432f-9e77-1e2632afd55d", upload_time: "2026-06-17T14:34:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]} [2026-06-17 14:35:02.763] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:34:12Z", "value" => "morefun"} [2026-06-17 14:35:02.794] [DEBUG] QUERY OK db=30.4ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "morefun", "vendor", 39771, ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:02.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313887, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]}} [2026-06-17 14:35:02.794] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:34:12Z", "value" => "kiosk_launcher"} [2026-06-17 14:35:02.833] [DEBUG] QUERY OK db=37.7ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "kiosk_launcher", "model", 39771, ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:02.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313889, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]}} [2026-06-17 14:35:02.833] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:34:12Z", "value" => "1.0"} [2026-06-17 14:35:02.854] [DEBUG] QUERY OK db=20.4ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "1.0", "app_version", 39771, ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:02.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313891, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]}} [2026-06-17 14:35:02.854] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:34:12Z", "value" => "13"} [2026-06-17 14:35:02.881] [DEBUG] QUERY OK db=26.5ms idle=21.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "13", "android_version", 39771, ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:02.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313893, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]}} [2026-06-17 14:35:02.886] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:34:12Z", "value" => "814"} [2026-06-17 14:35:02.913] [DEBUG] QUERY OK db=26.5ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "814", "ram_free_mb", 39771, ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:02.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313895, itemkey: "ram_free_mb", value: "814", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]}} [2026-06-17 14:35:02.914] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:34:12Z", "value" => "WIFI"} [2026-06-17 14:35:02.939] [DEBUG] QUERY OK db=24.9ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "WIFI", "network_type", 39771, ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:02.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313897, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]}} [2026-06-17 14:35:02.939] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:34:12Z", "value" => "true"} [2026-06-17 14:35:02.958] [DEBUG] QUERY OK db=18.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "true", "kiosk_active", 39771, ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:02.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313899, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]}} [2026-06-17 14:35:02.961] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:34:12Z", "value" => ""} [2026-06-17 14:35:03.008] [DEBUG] QUERY OK db=45.7ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:34:12Z", "sim_operator", 39771, ~N[2026-06-17 14:35:02], ~N[2026-06-17 14:35:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313901, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:02], updated_at: ~N[2026-06-17 14:35:02]}} [2026-06-17 14:35:03.008] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"} [2026-06-17 14:35:03.024] [DEBUG] QUERY OK db=15.7ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "UNKNOWN", "sim_number", 39771, ~N[2026-06-17 14:35:03], ~N[2026-06-17 14:35:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313903, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:03], updated_at: ~N[2026-06-17 14:35:03]}} [2026-06-17 14:35:03.024] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"} [2026-06-17 14:35:03.048] [DEBUG] QUERY OK db=22.7ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "UNKNOWN", "sim_iccid", 39771, ~N[2026-06-17 14:35:03], ~N[2026-06-17 14:35:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313905, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:03], updated_at: ~N[2026-06-17 14:35:03]}} [2026-06-17 14:35:03.050] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"} [2026-06-17 14:35:03.092] [DEBUG] QUERY OK db=41.2ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "UNKNOWN", "sim_imsi", 39771, ~N[2026-06-17 14:35:03], ~N[2026-06-17 14:35:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313907, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:03], updated_at: ~N[2026-06-17 14:35:03]}} [2026-06-17 14:35:03.093] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"} [2026-06-17 14:35:03.116] [DEBUG] QUERY OK db=22.6ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "UNKNOWN", "sim_iccid2", 39771, ~N[2026-06-17 14:35:03], ~N[2026-06-17 14:35:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313909, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:03], updated_at: ~N[2026-06-17 14:35:03]}} [2026-06-17 14:35:03.116] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:34:12Z", "value" => "UNKNOWN"} [2026-06-17 14:35:03.141] [DEBUG] QUERY OK db=22.2ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "UNKNOWN", "sim_imsi2", 39771, ~N[2026-06-17 14:35:03], ~N[2026-06-17 14:35:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313912, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:03], updated_at: ~N[2026-06-17 14:35:03]}} [2026-06-17 14:35:03.142] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:34:12Z", "value" => "31"} [2026-06-17 14:35:03.174] [DEBUG] QUERY OK db=32.2ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "31", "data_usage_mb", 39771, ~N[2026-06-17 14:35:03], ~N[2026-06-17 14:35:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313913, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:03], updated_at: ~N[2026-06-17 14:35:03]}} [2026-06-17 14:35:03.175] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:34:12Z", "value" => "0"} [2026-06-17 14:35:03.207] [DEBUG] QUERY OK db=31.8ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "0", "mobile_data_mb", 39771, ~N[2026-06-17 14:35:03], ~N[2026-06-17 14:35:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313915, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:03], updated_at: ~N[2026-06-17 14:35:03]}} [2026-06-17 14:35:03.213] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:34:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:35:03.270] [DEBUG] QUERY OK db=57.1ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:34:12Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39771, ~N[2026-06-17 14:35:03], ~N[2026-06-17 14:35:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:03.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313918, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:34:12Z", message: nil, status_log_id: 39771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:03], updated_at: ~N[2026-06-17 14:35:03]}} [2026-06-17 14:35:04.220] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 14:35:04.220] [INFO ] Incoming JSON payload: {"oid":"3d8d78e1-5be4-441a-93dc-0f0d52b4d3a2","sn":"98251226730001","uploadTime":"2026-06-17T22:38:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"ram_free_mb","value":"951","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T22:38:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T22:38:15Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 14:35:04.222] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3d8d78e1-5be4-441a-93dc-0f0d52b4d3a2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T22:38:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T22:38:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T22:38:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T22:38:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T22:38:15Z", "value" => "951"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T22:38:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T22:38:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T22:38:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T22:38:15Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T22:38:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T22:38:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T22:38:15Z", "vendor" => "morefun"} [2026-06-17 14:35:04.223] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:35:04.223] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 14:35:04.223] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 14:35:04.224] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=492.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 14:35:04.225] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=443.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-06-17 14:35:04.225] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:35:04.226] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.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:98 [2026-06-17 14:35:04.226] [INFO ] Terminal updated: 98251226730001 [2026-06-17 14:35:04.237] [DEBUG] QUERY OK source="tms_terminals" db=10.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:35:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:35:04.237] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 14:35:04.238] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=11.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:629 [2026-06-17 14:35:04.269] [DEBUG] QUERY OK source="tms_terminals" db=30.2ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:35:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:35:04.325] [DEBUG] QUERY OK db=56.3ms idle=31.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3d8d78e1-5be4-441a-93dc-0f0d52b4d3a2", "2026-06-17T22:38:15Z", ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:35:04.326] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39773, oid: "3d8d78e1-5be4-441a-93dc-0f0d52b4d3a2", upload_time: "2026-06-17T22:38:15Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]} [2026-06-17 14:35:04.326] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T22:38:15Z", "value" => "morefun"} [2026-06-17 14:35:04.340] [DEBUG] QUERY OK db=14.1ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "morefun", "vendor", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313919, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.341] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T22:38:15Z", "value" => "kiosk_launcher"} [2026-06-17 14:35:04.373] [DEBUG] QUERY OK db=31.5ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "kiosk_launcher", "model", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313921, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.373] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T22:38:15Z", "value" => "1.0"} [2026-06-17 14:35:04.401] [DEBUG] QUERY OK db=27.4ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "1.0", "app_version", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313923, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.401] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T22:38:15Z", "value" => "13"} [2026-06-17 14:35:04.425] [DEBUG] QUERY OK db=23.5ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "13", "android_version", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313925, itemkey: "android_version", value: "13", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.425] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T22:38:15Z", "value" => "951"} [2026-06-17 14:35:04.446] [DEBUG] QUERY OK db=20.6ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "951", "ram_free_mb", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313927, itemkey: "ram_free_mb", value: "951", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.447] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T22:38:15Z", "value" => "WIFI"} [2026-06-17 14:35:04.474] [DEBUG] QUERY OK db=27.0ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "WIFI", "network_type", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313929, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.475] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T22:38:15Z", "value" => "true"} [2026-06-17 14:35:04.507] [DEBUG] QUERY OK db=31.4ms queue=0.2ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "true", "kiosk_active", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.507] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313931, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.507] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T22:38:15Z", "value" => ""} [2026-06-17 14:35:04.531] [DEBUG] QUERY OK db=23.2ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T22:38:15Z", "sim_operator", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313933, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.531] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"} [2026-06-17 14:35:04.551] [DEBUG] QUERY OK db=19.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "UNKNOWN", "sim_number", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313935, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.551] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"} [2026-06-17 14:35:04.596] [DEBUG] QUERY OK db=44.8ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "UNKNOWN", "sim_iccid", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313937, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.597] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"} [2026-06-17 14:35:04.618] [DEBUG] QUERY OK db=20.8ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "UNKNOWN", "sim_imsi", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313939, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.618] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"} [2026-06-17 14:35:04.651] [DEBUG] QUERY OK db=32.1ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "UNKNOWN", "sim_iccid2", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313941, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.652] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T22:38:15Z", "value" => "UNKNOWN"} [2026-06-17 14:35:04.686] [DEBUG] QUERY OK db=32.5ms queue=0.2ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "UNKNOWN", "sim_imsi2", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313943, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.686] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T22:38:15Z", "value" => "6"} [2026-06-17 14:35:04.712] [DEBUG] QUERY OK db=23.3ms queue=1.4ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "6", "data_usage_mb", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313945, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.713] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T22:38:15Z", "value" => "0"} [2026-06-17 14:35:04.738] [DEBUG] QUERY OK db=25.0ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "0", "mobile_data_mb", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313947, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:35:04.739] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T22:38:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 14:35:04.785] [DEBUG] QUERY OK db=44.3ms idle=4.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:38:15Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39773, ~N[2026-06-17 14:35:04], ~N[2026-06-17 14:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:35:04.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313949, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T22:38:15Z", message: nil, status_log_id: 39773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:35:04], updated_at: ~N[2026-06-17 14:35:04]}} [2026-06-17 14:36:03.107] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:36:03.107] [INFO ] Incoming JSON payload: {"oid":"50089e04-5050-4479-9bca-10aed981ec82","sn":"98251226730002","uploadTime":"2026-06-17T14:35:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"ram_free_mb","value":"812","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:35:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:35:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 14:36:03.108] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "50089e04-5050-4479-9bca-10aed981ec82", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:35:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:35:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:35:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:35:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:35:13Z", "value" => "812"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:35:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:35:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:35:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:35:13Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:35:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:35:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:35:13Z", "vendor" => "morefun"} [2026-06-17 14:36:03.109] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:36:03.109] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:36:03.109] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:36:03.115] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms queue=1.9ms idle=233.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-06-17 14:36:03.117] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=0.3ms idle=199.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.`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-06-17 14:36:03.117] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:36:03.121] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:36:03.121] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:36:03.136] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:36:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:36:03.136] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:36:03.141] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms queue=0.4ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:36:03.167] [DEBUG] QUERY OK source="tms_terminals" db=25.5ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:36:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:36:03.213] [DEBUG] QUERY OK db=45.2ms queue=0.5ms idle=26.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "50089e04-5050-4479-9bca-10aed981ec82", "2026-06-17T14:35:13Z", ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:36:03.214] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39776, oid: "50089e04-5050-4479-9bca-10aed981ec82", upload_time: "2026-06-17T14:35:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]} [2026-06-17 14:36:03.214] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:35:13Z", "value" => "morefun"} [2026-06-17 14:36:03.231] [DEBUG] QUERY OK db=15.7ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "morefun", "vendor", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313952, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.231] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:35:13Z", "value" => "kiosk_launcher"} [2026-06-17 14:36:03.268] [DEBUG] QUERY OK db=36.4ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "kiosk_launcher", "model", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313954, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.269] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:35:13Z", "value" => "1.0"} [2026-06-17 14:36:03.305] [DEBUG] QUERY OK db=36.0ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "1.0", "app_version", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313956, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.307] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:35:13Z", "value" => "13"} [2026-06-17 14:36:03.324] [DEBUG] QUERY OK db=16.7ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "13", "android_version", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313958, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.325] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:35:13Z", "value" => "812"} [2026-06-17 14:36:03.356] [DEBUG] QUERY OK db=30.7ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "812", "ram_free_mb", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313960, itemkey: "ram_free_mb", value: "812", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.359] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:35:13Z", "value" => "WIFI"} [2026-06-17 14:36:03.397] [DEBUG] QUERY OK db=38.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "WIFI", "network_type", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313962, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.398] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:35:13Z", "value" => "true"} [2026-06-17 14:36:03.410] [DEBUG] QUERY OK db=11.7ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "true", "kiosk_active", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313964, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.410] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:35:13Z", "value" => ""} [2026-06-17 14:36:03.444] [DEBUG] QUERY OK db=33.6ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:35:13Z", "sim_operator", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313966, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.445] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"} [2026-06-17 14:36:03.484] [DEBUG] QUERY OK db=39.3ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "UNKNOWN", "sim_number", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313968, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.485] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"} [2026-06-17 14:36:03.502] [DEBUG] QUERY OK db=16.9ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "UNKNOWN", "sim_iccid", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313970, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.503] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"} [2026-06-17 14:36:03.526] [DEBUG] QUERY OK db=23.5ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "UNKNOWN", "sim_imsi", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313972, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.527] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"} [2026-06-17 14:36:03.562] [DEBUG] QUERY OK db=34.2ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "UNKNOWN", "sim_iccid2", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313974, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.562] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:35:13Z", "value" => "UNKNOWN"} [2026-06-17 14:36:03.585] [DEBUG] QUERY OK db=21.9ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "UNKNOWN", "sim_imsi2", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313976, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.585] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:35:13Z", "value" => "31"} [2026-06-17 14:36:03.601] [DEBUG] QUERY OK db=15.8ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "31", "data_usage_mb", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313978, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.601] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:35:13Z", "value" => "0"} [2026-06-17 14:36:03.631] [DEBUG] QUERY OK db=28.7ms idle=17.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "0", "mobile_data_mb", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313980, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:36:03.632] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:35:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:36:03.671] [DEBUG] QUERY OK db=37.8ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:35:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39776, ~N[2026-06-17 14:36:03], ~N[2026-06-17 14:36:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:36:03.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313982, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:35:13Z", message: nil, status_log_id: 39776, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:36:03], updated_at: ~N[2026-06-17 14:36:03]}} [2026-06-17 14:37:02.978] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:37:02.978] [INFO ] Incoming JSON payload: {"oid":"8352bc00-2a65-4f0b-bee3-c0e052b718ef","sn":"98251226730002","uploadTime":"2026-06-17T14:36:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"ram_free_mb","value":"811","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:36:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:36:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 14:37:02.980] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8352bc00-2a65-4f0b-bee3-c0e052b718ef", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:36:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:36:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:36:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:36:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:36:13Z", "value" => "811"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:36:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:36:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:36:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:36:13Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:36:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:36:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:36:13Z", "vendor" => "morefun"} [2026-06-17 14:37:02.980] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:37:02.980] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:37:02.980] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:37:02.982] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=969.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-06-17 14:37:02.983] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=66.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-06-17 14:37:02.983] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:37:02.983] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:37:02.984] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:37:03.007] [DEBUG] QUERY OK source="tms_terminals" db=22.5ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:37:02], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:37:03.007] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:37:03.010] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:37:03.024] [DEBUG] QUERY OK source="tms_terminals" db=13.7ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:37:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:37:03.058] [DEBUG] QUERY OK db=33.0ms idle=9.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8352bc00-2a65-4f0b-bee3-c0e052b718ef", "2026-06-17T14:36:13Z", ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:37:03.058] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39777, oid: "8352bc00-2a65-4f0b-bee3-c0e052b718ef", upload_time: "2026-06-17T14:36:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]} [2026-06-17 14:37:03.058] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:36:13Z", "value" => "morefun"} [2026-06-17 14:37:03.091] [DEBUG] QUERY OK db=31.6ms queue=0.1ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "morefun", "vendor", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313983, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.092] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:36:13Z", "value" => "kiosk_launcher"} [2026-06-17 14:37:03.108] [DEBUG] QUERY OK db=16.0ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "kiosk_launcher", "model", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313985, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.109] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:36:13Z", "value" => "1.0"} [2026-06-17 14:37:03.151] [DEBUG] QUERY OK db=41.5ms queue=0.7ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "1.0", "app_version", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313987, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.153] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:36:13Z", "value" => "13"} [2026-06-17 14:37:03.189] [DEBUG] QUERY OK db=35.8ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "13", "android_version", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313989, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.189] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:36:13Z", "value" => "811"} [2026-06-17 14:37:03.206] [DEBUG] QUERY OK db=16.6ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "811", "ram_free_mb", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313991, itemkey: "ram_free_mb", value: "811", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.207] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:36:13Z", "value" => "WIFI"} [2026-06-17 14:37:03.259] [DEBUG] QUERY OK db=51.6ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "WIFI", "network_type", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313993, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.261] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:36:13Z", "value" => "true"} [2026-06-17 14:37:03.284] [DEBUG] QUERY OK db=22.8ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "true", "kiosk_active", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313995, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.284] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:36:13Z", "value" => ""} [2026-06-17 14:37:03.356] [DEBUG] QUERY OK db=71.6ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:36:13Z", "sim_operator", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313997, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.357] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"} [2026-06-17 14:37:03.400] [DEBUG] QUERY OK db=41.8ms idle=73.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "UNKNOWN", "sim_number", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 313999, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.402] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"} [2026-06-17 14:37:03.421] [DEBUG] QUERY OK db=18.7ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "UNKNOWN", "sim_iccid", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314001, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.426] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"} [2026-06-17 14:37:03.443] [DEBUG] QUERY OK db=17.0ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "UNKNOWN", "sim_imsi", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314003, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.445] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"} [2026-06-17 14:37:03.490] [DEBUG] QUERY OK db=44.6ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "UNKNOWN", "sim_iccid2", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314005, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.491] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:36:13Z", "value" => "UNKNOWN"} [2026-06-17 14:37:03.521] [DEBUG] QUERY OK db=30.3ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "UNKNOWN", "sim_imsi2", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314007, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.522] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:36:13Z", "value" => "31"} [2026-06-17 14:37:03.548] [DEBUG] QUERY OK db=25.1ms queue=0.5ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "31", "data_usage_mb", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314009, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.548] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:36:13Z", "value" => "0"} [2026-06-17 14:37:03.578] [DEBUG] QUERY OK db=28.7ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "0", "mobile_data_mb", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314011, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:37:03.580] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:36:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:37:03.609] [DEBUG] QUERY OK db=26.4ms queue=1.3ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:36:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39777, ~N[2026-06-17 14:37:03], ~N[2026-06-17 14:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:37:03.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314013, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:36:13Z", message: nil, status_log_id: 39777, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:37:03], updated_at: ~N[2026-06-17 14:37:03]}} [2026-06-17 14:38:03.089] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:38:03.089] [INFO ] Incoming JSON payload: {"oid":"d3b07f10-c36c-4b4f-98d8-fa5d09b7896e","sn":"98251226730002","uploadTime":"2026-06-17T14:37:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"ram_free_mb","value":"808","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:37:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:37:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 14:38:03.090] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d3b07f10-c36c-4b4f-98d8-fa5d09b7896e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:37:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:37:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:37:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:37:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:37:13Z", "value" => "808"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:37:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:37:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:37:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:37:13Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:37:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:37:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:37:13Z", "vendor" => "morefun"} [2026-06-17 14:38:03.090] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:38:03.091] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:38:03.091] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:38:03.095] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=3.3ms idle=948.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 14:38:03.097] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=169.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-06-17 14:38:03.097] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:38:03.102] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms queue=0.2ms idle=2.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:38:03.104] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:38:03.136] [DEBUG] QUERY OK source="tms_terminals" db=31.7ms idle=7.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:38:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:38:03.136] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:38:03.137] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:38:03.157] [DEBUG] QUERY OK source="tms_terminals" db=17.7ms queue=1.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:38:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:38:03.178] [DEBUG] QUERY OK db=16.4ms queue=2.3ms idle=10.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d3b07f10-c36c-4b4f-98d8-fa5d09b7896e", "2026-06-17T14:37:13Z", ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:38:03.180] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39780, oid: "d3b07f10-c36c-4b4f-98d8-fa5d09b7896e", upload_time: "2026-06-17T14:37:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]} [2026-06-17 14:38:03.180] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:37:13Z", "value" => "morefun"} [2026-06-17 14:38:03.212] [DEBUG] QUERY OK db=31.6ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "morefun", "vendor", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314016, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.213] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:37:13Z", "value" => "kiosk_launcher"} [2026-06-17 14:38:03.268] [DEBUG] QUERY OK db=54.7ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "kiosk_launcher", "model", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314018, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.268] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:37:13Z", "value" => "1.0"} [2026-06-17 14:38:03.313] [DEBUG] QUERY OK db=44.8ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "1.0", "app_version", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314020, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.315] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:37:13Z", "value" => "13"} [2026-06-17 14:38:03.388] [DEBUG] QUERY OK db=72.9ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "13", "android_version", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314022, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.389] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:37:13Z", "value" => "808"} [2026-06-17 14:38:03.418] [DEBUG] QUERY OK db=28.7ms idle=76.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "808", "ram_free_mb", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314024, itemkey: "ram_free_mb", value: "808", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.418] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:37:13Z", "value" => "WIFI"} [2026-06-17 14:38:03.433] [DEBUG] QUERY OK db=14.6ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "WIFI", "network_type", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314026, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.434] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:37:13Z", "value" => "true"} [2026-06-17 14:38:03.472] [DEBUG] QUERY OK db=37.7ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "true", "kiosk_active", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314028, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.472] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:37:13Z", "value" => ""} [2026-06-17 14:38:03.512] [DEBUG] QUERY OK db=39.7ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:37:13Z", "sim_operator", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314030, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.513] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"} [2026-06-17 14:38:03.526] [DEBUG] QUERY OK db=11.5ms queue=1.2ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "UNKNOWN", "sim_number", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314032, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.526] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"} [2026-06-17 14:38:03.559] [DEBUG] QUERY OK db=32.5ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "UNKNOWN", "sim_iccid", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314034, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.559] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"} [2026-06-17 14:38:03.595] [DEBUG] QUERY OK db=34.9ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "UNKNOWN", "sim_imsi", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314036, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.595] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"} [2026-06-17 14:38:03.610] [DEBUG] QUERY OK db=14.7ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "UNKNOWN", "sim_iccid2", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314038, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.611] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:37:13Z", "value" => "UNKNOWN"} [2026-06-17 14:38:03.646] [DEBUG] QUERY OK db=34.9ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "UNKNOWN", "sim_imsi2", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314040, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.647] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:37:13Z", "value" => "31"} [2026-06-17 14:38:03.680] [DEBUG] QUERY OK db=31.4ms queue=1.0ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "31", "data_usage_mb", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314042, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.680] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:37:13Z", "value" => "0"} [2026-06-17 14:38:03.701] [DEBUG] QUERY OK db=19.2ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "0", "mobile_data_mb", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314044, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:03.702] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:37:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:38:03.731] [DEBUG] QUERY OK db=28.0ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:37:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39780, ~N[2026-06-17 14:38:03], ~N[2026-06-17 14:38:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:38:03.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314046, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:37:13Z", message: nil, status_log_id: 39780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:38:03], updated_at: ~N[2026-06-17 14:38:03]}} [2026-06-17 14:38:11.496] [INFO ] Performing scheduled filter cache refresh... [2026-06-17 14:38:16.498] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1312.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-06-17 14:38:17.398] [INFO ] Running offline device check... [2026-06-17 14:38:18.105] [INFO ] Starting offline device check... [2026-06-17 14:38:18.106] [DEBUG] QUERY OK source="filter_usage" db=0.5ms idle=912.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-06-17 14:38:18.106] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 6 models [2026-06-17 14:38:18.107] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=187.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:679 [2026-06-17 14:38:18.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.120] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.120] [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:694 [2026-06-17 14:38:18.122] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.123] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.124] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.124] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.126] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.137] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.144] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.145] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.157] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.1ms 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:694 [2026-06-17 14:38:18.193] [DEBUG] QUERY OK source="tms_terminals" db=35.7ms idle=11.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:38:18], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:38:18.193] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:38:18.195] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=36.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:694 [2026-06-17 14:38:18.196] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.197] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.198] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.199] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.210] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.216] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.221] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.224] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.224] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.225] [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:694 [2026-06-17 14:38:18.226] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.227] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.228] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.229] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.230] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:38:18.230] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 14:38:18.230] [INFO ] Offline device check completed successfully [2026-06-17 14:39:03.519] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:39:03.519] [INFO ] Incoming JSON payload: {"oid":"8be62443-2616-4633-9b75-97fb621a6b8a","sn":"98251226730002","uploadTime":"2026-06-17T14:38:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"ram_free_mb","value":"816","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:38:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:38:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 14:39:03.521] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8be62443-2616-4633-9b75-97fb621a6b8a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:38:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:38:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:38:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:38:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:38:13Z", "value" => "816"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:38:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:38:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:38:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:38:13Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:38:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:38:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:38:13Z", "vendor" => "morefun"} [2026-06-17 14:39:03.521] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:39:03.522] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:39:03.522] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:39:03.523] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=600.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-06-17 14:39:03.523] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=214.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-06-17 14:39:03.524] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:39:03.524] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:39:03.525] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:39:03.551] [DEBUG] QUERY OK source="tms_terminals" db=25.4ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:39:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:39:03.551] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:39:03.552] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=26.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:39:03.581] [DEBUG] QUERY OK source="tms_terminals" db=29.0ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:39:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:39:03.615] [DEBUG] QUERY OK db=33.5ms idle=29.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8be62443-2616-4633-9b75-97fb621a6b8a", "2026-06-17T14:38:13Z", ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:39:03.615] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39781, oid: "8be62443-2616-4633-9b75-97fb621a6b8a", upload_time: "2026-06-17T14:38:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]} [2026-06-17 14:39:03.617] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:38:13Z", "value" => "morefun"} [2026-06-17 14:39:03.637] [DEBUG] QUERY OK db=19.7ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "morefun", "vendor", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314047, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.638] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:38:13Z", "value" => "kiosk_launcher"} [2026-06-17 14:39:03.682] [DEBUG] QUERY OK db=43.6ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "kiosk_launcher", "model", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314049, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.682] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:38:13Z", "value" => "1.0"} [2026-06-17 14:39:03.721] [DEBUG] QUERY OK db=39.2ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "1.0", "app_version", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314051, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.722] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:38:13Z", "value" => "13"} [2026-06-17 14:39:03.751] [DEBUG] QUERY OK db=28.9ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "13", "android_version", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314053, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.752] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:38:13Z", "value" => "816"} [2026-06-17 14:39:03.797] [DEBUG] QUERY OK db=44.9ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "816", "ram_free_mb", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314055, itemkey: "ram_free_mb", value: "816", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.798] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:38:13Z", "value" => "WIFI"} [2026-06-17 14:39:03.829] [DEBUG] QUERY OK db=31.1ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "WIFI", "network_type", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314057, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.830] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:38:13Z", "value" => "true"} [2026-06-17 14:39:03.863] [DEBUG] QUERY OK db=32.5ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "true", "kiosk_active", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314059, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.863] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:38:13Z", "value" => ""} [2026-06-17 14:39:03.906] [DEBUG] QUERY OK db=42.1ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:38:13Z", "sim_operator", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314061, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.906] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"} [2026-06-17 14:39:03.940] [DEBUG] QUERY OK db=33.4ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "UNKNOWN", "sim_number", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314063, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.940] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"} [2026-06-17 14:39:03.985] [DEBUG] QUERY OK db=44.5ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "UNKNOWN", "sim_iccid", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:03.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314065, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:03.986] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"} [2026-06-17 14:39:04.022] [DEBUG] QUERY OK db=35.7ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "UNKNOWN", "sim_imsi", 39781, ~N[2026-06-17 14:39:03], ~N[2026-06-17 14:39:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:04.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314067, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:03], updated_at: ~N[2026-06-17 14:39:03]}} [2026-06-17 14:39:04.022] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"} [2026-06-17 14:39:04.068] [DEBUG] QUERY OK db=45.5ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "UNKNOWN", "sim_iccid2", 39781, ~N[2026-06-17 14:39:04], ~N[2026-06-17 14:39:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:04.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314069, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:04], updated_at: ~N[2026-06-17 14:39:04]}} [2026-06-17 14:39:04.069] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:38:13Z", "value" => "UNKNOWN"} [2026-06-17 14:39:04.109] [DEBUG] QUERY OK db=39.8ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "UNKNOWN", "sim_imsi2", 39781, ~N[2026-06-17 14:39:04], ~N[2026-06-17 14:39:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:04.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314071, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:04], updated_at: ~N[2026-06-17 14:39:04]}} [2026-06-17 14:39:04.109] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:38:13Z", "value" => "31"} [2026-06-17 14:39:04.137] [DEBUG] QUERY OK db=26.9ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "31", "data_usage_mb", 39781, ~N[2026-06-17 14:39:04], ~N[2026-06-17 14:39:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:04.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314073, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:04], updated_at: ~N[2026-06-17 14:39:04]}} [2026-06-17 14:39:04.137] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:38:13Z", "value" => "0"} [2026-06-17 14:39:04.177] [DEBUG] QUERY OK db=39.5ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "0", "mobile_data_mb", 39781, ~N[2026-06-17 14:39:04], ~N[2026-06-17 14:39:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:04.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314075, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:04], updated_at: ~N[2026-06-17 14:39:04]}} [2026-06-17 14:39:04.179] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:38:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:39:04.229] [DEBUG] QUERY OK db=49.4ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:38:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39781, ~N[2026-06-17 14:39:04], ~N[2026-06-17 14:39:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:39:04.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314077, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:38:13Z", message: nil, status_log_id: 39781, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:39:04], updated_at: ~N[2026-06-17 14:39:04]}} [2026-06-17 14:40:03.752] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:40:03.752] [INFO ] Incoming JSON payload: {"oid":"c3890a61-24ca-41e0-b8e9-27ecde816036","sn":"98251226730002","uploadTime":"2026-06-17T14:39:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"ram_free_mb","value":"813","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:39:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:39:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.re (truncated) [2026-06-17 14:40:03.753] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c3890a61-24ca-41e0-b8e9-27ecde816036", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:39:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:39:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:39:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:39:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:39:13Z", "value" => "813"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:39:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:39:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:39:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:39:13Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:39:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:39:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:39:13Z", "vendor" => "morefun"} [2026-06-17 14:40:03.753] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:40:03.754] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:40:03.754] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:40:03.758] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms queue=0.1ms idle=826.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-06-17 14:40:03.762] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=2.3ms idle=297.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-06-17 14:40:03.762] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:40:03.764] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=3.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:40:03.764] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:40:03.789] [DEBUG] QUERY OK source="tms_terminals" db=24.3ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:40:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:40:03.789] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:40:03.790] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=25.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:40:03.816] [DEBUG] QUERY OK source="tms_terminals" db=25.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:40:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:40:03.857] [DEBUG] QUERY OK db=41.0ms queue=0.1ms idle=25.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c3890a61-24ca-41e0-b8e9-27ecde816036", "2026-06-17T14:39:13Z", ~N[2026-06-17 14:40:03], ~N[2026-06-17 14:40:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:40:03.857] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39783, oid: "c3890a61-24ca-41e0-b8e9-27ecde816036", upload_time: "2026-06-17T14:39:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:03], updated_at: ~N[2026-06-17 14:40:03]} [2026-06-17 14:40:03.857] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:39:13Z", "value" => "morefun"} [2026-06-17 14:40:03.885] [DEBUG] QUERY OK db=27.0ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "morefun", "vendor", 39783, ~N[2026-06-17 14:40:03], ~N[2026-06-17 14:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:03.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314079, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:03], updated_at: ~N[2026-06-17 14:40:03]}} [2026-06-17 14:40:03.885] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:39:13Z", "value" => "kiosk_launcher"} [2026-06-17 14:40:03.925] [DEBUG] QUERY OK db=38.8ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "kiosk_launcher", "model", 39783, ~N[2026-06-17 14:40:03], ~N[2026-06-17 14:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:03.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314081, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:03], updated_at: ~N[2026-06-17 14:40:03]}} [2026-06-17 14:40:03.925] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:39:13Z", "value" => "1.0"} [2026-06-17 14:40:03.969] [DEBUG] QUERY OK db=43.5ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "1.0", "app_version", 39783, ~N[2026-06-17 14:40:03], ~N[2026-06-17 14:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:03.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314083, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:03], updated_at: ~N[2026-06-17 14:40:03]}} [2026-06-17 14:40:03.970] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:39:13Z", "value" => "13"} [2026-06-17 14:40:03.993] [DEBUG] QUERY OK db=21.1ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "13", "android_version", 39783, ~N[2026-06-17 14:40:03], ~N[2026-06-17 14:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:03.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314085, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:03], updated_at: ~N[2026-06-17 14:40:03]}} [2026-06-17 14:40:03.994] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:39:13Z", "value" => "813"} [2026-06-17 14:40:04.035] [DEBUG] QUERY OK db=41.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "813", "ram_free_mb", 39783, ~N[2026-06-17 14:40:03], ~N[2026-06-17 14:40:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314087, itemkey: "ram_free_mb", value: "813", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:03], updated_at: ~N[2026-06-17 14:40:03]}} [2026-06-17 14:40:04.036] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:39:13Z", "value" => "WIFI"} [2026-06-17 14:40:04.082] [DEBUG] QUERY OK db=45.6ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "WIFI", "network_type", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314089, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.082] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:39:13Z", "value" => "true"} [2026-06-17 14:40:04.115] [DEBUG] QUERY OK db=32.5ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "true", "kiosk_active", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314091, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.115] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:39:13Z", "value" => ""} [2026-06-17 14:40:04.140] [DEBUG] QUERY OK db=24.7ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:39:13Z", "sim_operator", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314093, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.141] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"} [2026-06-17 14:40:04.188] [DEBUG] QUERY OK db=46.8ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "UNKNOWN", "sim_number", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314095, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.188] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"} [2026-06-17 14:40:04.225] [DEBUG] QUERY OK db=36.5ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "UNKNOWN", "sim_iccid", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314097, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.226] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"} [2026-06-17 14:40:04.267] [DEBUG] QUERY OK db=40.9ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "UNKNOWN", "sim_imsi", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314099, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.267] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"} [2026-06-17 14:40:04.305] [DEBUG] QUERY OK db=37.7ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "UNKNOWN", "sim_iccid2", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314101, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.306] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:39:13Z", "value" => "UNKNOWN"} [2026-06-17 14:40:04.339] [DEBUG] QUERY OK db=33.2ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "UNKNOWN", "sim_imsi2", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314103, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.340] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:39:13Z", "value" => "31"} [2026-06-17 14:40:04.375] [DEBUG] QUERY OK db=34.9ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "31", "data_usage_mb", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314105, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.376] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:39:13Z", "value" => "0"} [2026-06-17 14:40:04.406] [DEBUG] QUERY OK db=29.8ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "0", "mobile_data_mb", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314107, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:40:04.407] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:39:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:40:04.451] [DEBUG] QUERY OK db=42.7ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:39:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39783, ~N[2026-06-17 14:40:04], ~N[2026-06-17 14:40:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:40:04.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314109, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:39:13Z", message: nil, status_log_id: 39783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:40:04], updated_at: ~N[2026-06-17 14:40:04]}} [2026-06-17 14:41:03.988] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:41:03.988] [INFO ] Incoming JSON payload: {"oid":"1e07762b-61f7-42e7-892f-96f62aa2887f","sn":"98251226730002","uploadTime":"2026-06-17T14:40:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"ram_free_mb","value":"805","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:40:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:40:13Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.wif (truncated) [2026-06-17 14:41:03.990] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1e07762b-61f7-42e7-892f-96f62aa2887f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:40:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:40:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:40:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:40:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:40:13Z", "value" => "805"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:40:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:40:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:40:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:40:13Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:40:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:40:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:40:13Z", "vendor" => "morefun"} [2026-06-17 14:41:03.990] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:41:03.990] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:41:03.990] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:41:03.991] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=370.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 14:41:03.992] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=60.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-06-17 14:41:03.992] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:41:03.994] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:41:03.994] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:41:04.016] [DEBUG] QUERY OK source="tms_terminals" db=22.0ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:41:03], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:41:04.016] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:41:04.017] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=23.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:41:04.046] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:41:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:41:04.068] [DEBUG] QUERY OK db=21.5ms idle=29.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1e07762b-61f7-42e7-892f-96f62aa2887f", "2026-06-17T14:40:13Z", ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:41:04.069] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39785, oid: "1e07762b-61f7-42e7-892f-96f62aa2887f", upload_time: "2026-06-17T14:40:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]} [2026-06-17 14:41:04.069] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:40:13Z", "value" => "morefun"} [2026-06-17 14:41:04.088] [DEBUG] QUERY OK db=18.5ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "morefun", "vendor", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314111, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.088] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:40:13Z", "value" => "kiosk_launcher"} [2026-06-17 14:41:04.126] [DEBUG] QUERY OK db=37.7ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "kiosk_launcher", "model", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314113, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.127] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:40:13Z", "value" => "1.0"} [2026-06-17 14:41:04.155] [DEBUG] QUERY OK db=28.0ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "1.0", "app_version", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314115, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.155] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:40:13Z", "value" => "13"} [2026-06-17 14:41:04.170] [DEBUG] QUERY OK db=14.6ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "13", "android_version", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.171] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314117, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.171] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:40:13Z", "value" => "805"} [2026-06-17 14:41:04.192] [DEBUG] QUERY OK db=20.7ms idle=16.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "805", "ram_free_mb", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314119, itemkey: "ram_free_mb", value: "805", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.192] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:40:13Z", "value" => "WIFI"} [2026-06-17 14:41:04.225] [DEBUG] QUERY OK db=32.4ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "WIFI", "network_type", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314121, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.225] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:40:13Z", "value" => "true"} [2026-06-17 14:41:04.251] [DEBUG] QUERY OK db=25.5ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "true", "kiosk_active", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314123, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.252] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:40:13Z", "value" => ""} [2026-06-17 14:41:04.270] [DEBUG] QUERY OK db=18.2ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:40:13Z", "sim_operator", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314125, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.271] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"} [2026-06-17 14:41:04.298] [DEBUG] QUERY OK db=27.3ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "UNKNOWN", "sim_number", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314127, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.299] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"} [2026-06-17 14:41:04.332] [DEBUG] QUERY OK db=33.2ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "UNKNOWN", "sim_iccid", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314129, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.333] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"} [2026-06-17 14:41:04.350] [DEBUG] QUERY OK db=16.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "UNKNOWN", "sim_imsi", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314131, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.350] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"} [2026-06-17 14:41:04.365] [DEBUG] QUERY OK db=14.4ms queue=0.1ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "UNKNOWN", "sim_iccid2", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314133, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.366] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:40:13Z", "value" => "UNKNOWN"} [2026-06-17 14:41:04.398] [DEBUG] QUERY OK db=31.6ms idle=15.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "UNKNOWN", "sim_imsi2", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314135, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.398] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:40:13Z", "value" => "31"} [2026-06-17 14:41:04.431] [DEBUG] QUERY OK db=33.0ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "31", "data_usage_mb", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314137, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.432] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:40:13Z", "value" => "0"} [2026-06-17 14:41:04.448] [DEBUG] QUERY OK db=16.3ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "0", "mobile_data_mb", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314139, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:04.450] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:40:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:41:04.476] [DEBUG] QUERY OK db=25.9ms idle=18.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:40:13Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39785, ~N[2026-06-17 14:41:04], ~N[2026-06-17 14:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:41:04.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314141, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:40:13Z", message: nil, status_log_id: 39785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:41:04], updated_at: ~N[2026-06-17 14:41:04]}} [2026-06-17 14:41:51.039] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 38µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "2", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 14:41:51.403] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 47µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "2", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 14:41:51.775] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 31µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "2", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 14:41:52.170] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 38µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Uz0OFCsaAClgfyJIIwxsAQIMbVVfOTY7cjddInlPWFN9iE4dMkZ6fuqS", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "2", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 14:41:52.590] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 14:41:52.592] [DEBUG] QUERY OK source="users_tokens" db=1.0ms queue=0.1ms idle=1034.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 14:41:52.591001Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 14:41:52.593] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=1661.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 14:41:52.596] [DEBUG] QUERY OK source="app_packages" db=2.0ms idle=840.9ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 14:41:52.597] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 14:41:52.599] [DEBUG] QUERY OK source="terminal_groups" db=2.0ms idle=1.0ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 14:41:52.599] [DEBUG] Replied in 9ms [2026-06-17 14:41:52.599] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 14:41:52.601] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 14:41:52.601] [DEBUG] Replied in 1ms [2026-06-17 14:41:57.923] [INFO ] GET /terminals [2026-06-17 14:41:57.942] [DEBUG] Processing with PlatformWeb.TerminalLive.Index.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-06-17 14:41:57.950] [DEBUG] QUERY OK source="users_tokens" db=0.5ms idle=1393.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 14:41:57.949829Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-06-17 14:41:57.955] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=187.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 14:41:57.956] [DEBUG] QUERY OK source="app_packages" db=0.3ms idle=25.0ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 14:41:57.956] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 14:41:57.957] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 14:41:57.958] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 14:41:57.964] [INFO ] Sent 200 in 41ms [2026-06-17 14:42:04.165] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:42:04.165] [INFO ] Incoming JSON payload: {"oid":"3f1f23c2-0098-422e-a028-fec3a502bee9","sn":"98251226730002","uploadTime":"2026-06-17T14:41:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"ram_free_mb","value":"808","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:41:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:41: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.wif (truncated) [2026-06-17 14:42:04.169] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3f1f23c2-0098-422e-a028-fec3a502bee9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:41:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:41:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:41:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:41:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:41:14Z", "value" => "808"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:41:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:41:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:41:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:41:14Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:41:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:41: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:41:14Z", "vendor" => "morefun"} [2026-06-17 14:42:04.169] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:42:04.169] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:42:04.169] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:42:04.170] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=379.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-06-17 14:42:04.171] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=239.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.`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-06-17 14:42:04.171] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:42:04.172] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:42:04.172] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:42:04.185] [DEBUG] QUERY OK source="tms_terminals" db=12.3ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:42:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:42:04.185] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:42:04.187] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:42:04.205] [DEBUG] QUERY OK source="tms_terminals" db=16.6ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:42:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:42:04.241] [DEBUG] QUERY OK db=35.6ms queue=0.1ms idle=17.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "3f1f23c2-0098-422e-a028-fec3a502bee9", "2026-06-17T14:41:14Z", ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:42:04.242] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39787, oid: "3f1f23c2-0098-422e-a028-fec3a502bee9", upload_time: "2026-06-17T14:41:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]} [2026-06-17 14:42:04.242] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:41:14Z", "value" => "morefun"} [2026-06-17 14:42:04.273] [DEBUG] QUERY OK db=31.0ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "morefun", "vendor", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.274] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314143, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.274] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:41:14Z", "value" => "kiosk_launcher"} [2026-06-17 14:42:04.288] [DEBUG] QUERY OK db=13.1ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "kiosk_launcher", "model", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314144, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.289] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:41:14Z", "value" => "1.0"} [2026-06-17 14:42:04.311] [DEBUG] QUERY OK db=22.1ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "1.0", "app_version", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314145, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.312] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:41:14Z", "value" => "13"} [2026-06-17 14:42:04.352] [DEBUG] QUERY OK db=39.8ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "13", "android_version", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314146, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.353] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:41:14Z", "value" => "808"} [2026-06-17 14:42:04.373] [DEBUG] QUERY OK db=19.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "808", "ram_free_mb", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314147, itemkey: "ram_free_mb", value: "808", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.375] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:41:14Z", "value" => "WIFI"} [2026-06-17 14:42:04.394] [DEBUG] QUERY OK db=18.3ms idle=23.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "WIFI", "network_type", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314149, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.394] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:41:14Z", "value" => "true"} [2026-06-17 14:42:04.439] [DEBUG] QUERY OK db=43.9ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "true", "kiosk_active", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314151, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.440] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:41:14Z", "value" => ""} [2026-06-17 14:42:04.454] [DEBUG] QUERY OK db=13.8ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:41:14Z", "sim_operator", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314153, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.454] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"} [2026-06-17 14:42:04.477] [DEBUG] QUERY OK db=22.4ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "UNKNOWN", "sim_number", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314155, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.478] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"} [2026-06-17 14:42:04.510] [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-06-17T14:41:14Z", "UNKNOWN", "sim_iccid", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314157, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.511] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"} [2026-06-17 14:42:04.538] [DEBUG] QUERY OK db=26.5ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "UNKNOWN", "sim_imsi", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314159, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.538] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"} [2026-06-17 14:42:04.559] [DEBUG] QUERY OK db=20.4ms queue=0.2ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "UNKNOWN", "sim_iccid2", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314161, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.559] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:41:14Z", "value" => "UNKNOWN"} [2026-06-17 14:42:04.590] [DEBUG] QUERY OK db=30.3ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "UNKNOWN", "sim_imsi2", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314163, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.590] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:41:14Z", "value" => "31"} [2026-06-17 14:42:04.624] [DEBUG] QUERY OK db=32.9ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "31", "data_usage_mb", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314165, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.624] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:41:14Z", "value" => "0"} [2026-06-17 14:42:04.643] [DEBUG] QUERY OK db=18.4ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41:14Z", "0", "mobile_data_mb", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314167, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.644] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:41: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:42:04.677] [DEBUG] QUERY OK db=30.1ms queue=1.6ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:41: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39787, ~N[2026-06-17 14:42:04], ~N[2026-06-17 14:42:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:42:04.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314169, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:41:14Z", message: nil, status_log_id: 39787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:42:04], updated_at: ~N[2026-06-17 14:42:04]}} [2026-06-17 14:42:04.679] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=35.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 14:42:04.682] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 14:42:44.379] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 33µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fhsgACgiCCB4XQQZLzM6UhoPTzxXDTMONLJpJVdYOdhhezb7Uhx_nAtf", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "vsn" => "2.0.0"} [2026-06-17 14:42:46.806] [DEBUG] MOUNT PlatformWeb.TerminalLive.Index Parameters: %{} Session: %{"_csrf_token" => "0Wjpbtly79lqJIXeOg7c9LGh", "live_socket_id" => "users_sessions:GQ6e0AWSAyUMhXX--LQ7xZGtf5LEYksMLfqayIoOhX8=", "user_token" => <<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>} [2026-06-17 14:42:46.807] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=1247.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)) [<<25, 14, 158, 208, 5, 146, 3, 37, 12, 133, 117, 254, 248, 180, 59, 197, 145, 173, 127, 146, 196, 98, 75, 12, 45, 250, 154, 200, 138, 14, 133, 127>>, "session", ~U[2026-06-17 14:42:46.806892Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-06-17 14:42:46.809] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1256.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 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:32 [2026-06-17 14:42:46.810] [DEBUG] QUERY OK source="app_packages" db=0.3ms idle=908.9ms SELECT a0.`id`, a0.`version_name`, a0.`model`, a0.`vendor`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`file_path`, a0.`remark`, a0.`creator_id`, a0.`inserted_at`, a0.`updated_at` FROM `app_packages` AS a0 [] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:37 [2026-06-17 14:42:46.810] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.add_terminal_counts/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:346 [2026-06-17 14:42:46.811] [DEBUG] QUERY OK source="terminal_groups" db=0.7ms idle=0.7ms SELECT t0.`id`, t0.`name`, t0.`description`, t0.`group_type`, t0.`color`, t0.`icon`, t0.`is_active`, t0.`created_by`, t0.`metadata`, t0.`parent_group_id`, t0.`inserted_at`, t0.`updated_at`, CASE WHEN t0.`group_type` = 'system' AND t0.`name` = 'All Terminals' THEN ? ELSE COALESCE(s1.`count`, 0) END FROM `terminal_groups` AS t0 LEFT OUTER JOIN (SELECT st0.`group_id` AS `group_id`, count(st0.`terminal_id`) AS `count` FROM `terminal_group_memberships` AS st0 WHERE (st0.`is_active` = TRUE) GROUP BY st0.`group_id`) AS s1 ON s1.`group_id` = t0.`id` WHERE (t0.`is_active` = TRUE) [39] ↳ PlatformWeb.TerminalLive.Index.mount/3, at: lib/platform_web/live/terminal_live/index.ex:40 [2026-06-17 14:42:46.812] [DEBUG] Replied in 5ms [2026-06-17 14:42:46.812] [DEBUG] HANDLE PARAMS in PlatformWeb.TerminalLive.Index Parameters: %{} [2026-06-17 14:42:46.812] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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 [] ↳ PlatformWeb.TerminalLive.Index.handle_params/3, at: lib/platform_web/live/terminal_live/index.ex:135 [2026-06-17 14:42:46.813] [DEBUG] Replied in 1ms [2026-06-17 14:42:46.912] [INFO ] GET /images/favicon.png [2026-06-17 14:42:46.952] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/Shamanth/prverification/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/Shamanth/prverification/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-06-17 14:43:04.283] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:43:04.283] [INFO ] Incoming JSON payload: {"oid":"ed0e91de-0cef-48bb-a198-2f3fe0cfb2d2","sn":"98251226730002","uploadTime":"2026-06-17T14:42:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"ram_free_mb","value":"805","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:42:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:42: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.wif (truncated) [2026-06-17 14:43:04.292] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ed0e91de-0cef-48bb-a198-2f3fe0cfb2d2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:42:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:42:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:42:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:42:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:42:14Z", "value" => "805"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:42:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:42:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:42:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:42:14Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:42:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:42: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:42:14Z", "vendor" => "morefun"} [2026-06-17 14:43:04.294] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:43:04.296] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:43:04.297] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:43:04.299] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=366.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 14:43:04.300] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.3ms idle=357.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-06-17 14:43:04.300] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:43:04.301] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:43:04.301] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:43:04.315] [DEBUG] QUERY OK source="tms_terminals" db=13.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:43:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:43:04.315] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:43:04.317] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=14.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:43:04.341] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:43:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:43:04.364] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=24.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ed0e91de-0cef-48bb-a198-2f3fe0cfb2d2", "2026-06-17T14:42:14Z", ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:43:04.365] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39789, oid: "ed0e91de-0cef-48bb-a198-2f3fe0cfb2d2", upload_time: "2026-06-17T14:42:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]} [2026-06-17 14:43:04.365] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:42:14Z", "value" => "morefun"} [2026-06-17 14:43:04.390] [DEBUG] QUERY OK db=23.8ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "morefun", "vendor", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314175, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.391] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:42:14Z", "value" => "kiosk_launcher"} [2026-06-17 14:43:04.410] [DEBUG] QUERY OK db=16.9ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "kiosk_launcher", "model", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314177, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.410] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:42:14Z", "value" => "1.0"} [2026-06-17 14:43:04.436] [DEBUG] QUERY OK db=26.0ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "1.0", "app_version", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314179, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.437] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:42:14Z", "value" => "13"} [2026-06-17 14:43:04.476] [DEBUG] QUERY OK db=38.1ms queue=0.2ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "13", "android_version", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314181, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.477] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:42:14Z", "value" => "805"} [2026-06-17 14:43:04.491] [DEBUG] QUERY OK db=13.4ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "805", "ram_free_mb", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314183, itemkey: "ram_free_mb", value: "805", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.491] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:42:14Z", "value" => "WIFI"} [2026-06-17 14:43:04.523] [DEBUG] QUERY OK db=31.6ms idle=15.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "WIFI", "network_type", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314185, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.524] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:42:14Z", "value" => "true"} [2026-06-17 14:43:04.565] [DEBUG] QUERY OK db=41.0ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "true", "kiosk_active", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314187, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.566] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:42:14Z", "value" => ""} [2026-06-17 14:43:04.587] [DEBUG] QUERY OK db=21.0ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:42:14Z", "sim_operator", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314189, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.588] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"} [2026-06-17 14:43:04.611] [DEBUG] QUERY OK db=22.8ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "UNKNOWN", "sim_number", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314191, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.612] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"} [2026-06-17 14:43:04.655] [DEBUG] QUERY OK db=42.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "UNKNOWN", "sim_iccid", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314193, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.655] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"} [2026-06-17 14:43:04.675] [DEBUG] QUERY OK db=19.1ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "UNKNOWN", "sim_imsi", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314195, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.676] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"} [2026-06-17 14:43:04.702] [DEBUG] QUERY OK db=26.1ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "UNKNOWN", "sim_iccid2", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314197, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.703] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:42:14Z", "value" => "UNKNOWN"} [2026-06-17 14:43:04.739] [DEBUG] QUERY OK db=36.2ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "UNKNOWN", "sim_imsi2", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314199, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.740] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:42:14Z", "value" => "31"} [2026-06-17 14:43:04.760] [DEBUG] QUERY OK db=19.9ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "31", "data_usage_mb", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314201, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.761] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:42:14Z", "value" => "0"} [2026-06-17 14:43:04.780] [DEBUG] QUERY OK db=17.6ms queue=0.4ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42:14Z", "0", "mobile_data_mb", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314203, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.780] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:42: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:43:04.830] [DEBUG] QUERY OK db=48.5ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:42: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39789, ~N[2026-06-17 14:43:04], ~N[2026-06-17 14:43:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:04.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314205, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:42:14Z", message: nil, status_log_id: 39789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:04], updated_at: ~N[2026-06-17 14:43:04]}} [2026-06-17 14:43:04.832] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=51.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 [] ↳ PlatformWeb.TerminalLive.Index.handle_info/2, at: lib/platform_web/live/terminal_live/index.ex:371 [2026-06-17 14:43:04.836] [INFO ] Updated terminals: [%TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 1, serial_number: "61250415798001", oid: "org-id-placeholder", status: "offline", model: "SR600", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:20:23], updated_at: ~N[2026-05-25 07:05:16]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 2, serial_number: "61250424798001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-08-09 09:22:09], updated_at: ~N[2026-06-17 11:21:27]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 3, serial_number: "61250829798002", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 11:44:25], updated_at: ~N[2026-05-25 12:37:51]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 4, serial_number: "61250315780001", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-09-23 13:34:59], updated_at: ~N[2026-02-27 14:48:33]}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 5, serial_number: "61250904380014", oid: "org-id-placeholder", status: "offline", model: nil, vendor: nil, area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, inserted_at: ~N[2025-10-31 11:02:39], ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 6, serial_number: "61250904380001", oid: "organization_id", status: "offline", model: "SR600", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, group_memberships: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 7, serial_number: "61250904380091", oid: "organization_id", status: "offline", model: "MF919", vendor: "MoreFun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data__: nil, status_logs: #Ecto.Association.NotLoaded, ...}, %TmsCore.TerminalManagement.TmsTerminal{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminals">, id: 8, serial_number: "1234567890", oid: "organization_id", status: "offline", model: "MF919", vendor: "Morefun", area: nil, group: nil, imei: nil, imei2: nil, cpuid: nil, mac: nil, app_version: nil, data_version: nil, system_version: nil, secure_firmware: nil, factory_time: nil, boot_version: nil, pubkey: nil, appkey: nil, locked: nil, hardware_version: nil, driver_version: nil, pro_version: nil, module_version: nil, wifi_version: nil, remark: nil, otp_id: nil, netmac: nil, heart: nil, parameter_config_version: nil, emv_config_version: nil, keys_config_version: nil, kek_kcv: "112233", slot_number: 1, last_keys_update: nil, merchant_id: nil, location_code: nil, deployment_type: nil, tier: nil, __event_data (truncated) [2026-06-17 14:43:11.518] [INFO ] Starting scheduled rule validation [2026-06-17 14:43:16.520] [DEBUG] Validating missing assignments [2026-06-17 14:43:16.521] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=923.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-06-17 14:43:16.522] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=551.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-06-17 14:43:16.522] [DEBUG] Re-applied 0 rules during validation [2026-06-17 14:43:16.522] [DEBUG] Validating invalid assignments [2026-06-17 14:43:16.523] [DEBUG] Validating rule consistency [2026-06-17 14:43:16.523] [DEBUG] Updating group terminal counts [2026-06-17 14:43:16.524] [DEBUG] QUERY OK source="terminal_groups" db=1.1ms idle=1.9ms 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-06-17 14:43:16.525] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.1ms idle=2.4ms 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-06-17 14:43:16.525] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms idle=0.8ms 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-06-17 14:43:16.526] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms idle=0.8ms 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-06-17 14:43:16.526] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms 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-06-17 14:43:16.527] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms idle=0.8ms 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-06-17 14:43:16.528] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=0.6ms 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-06-17 14:43:16.528] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=0.8ms 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-06-17 14:43:16.528] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-06-17 14:43:16.528] [INFO ] Rule validation completed - applied 0 fixes [2026-06-17 14:43:18.231] [INFO ] Running offline device check... [2026-06-17 14:43:18.231] [INFO ] Starting offline device check... [2026-06-17 14:43:18.232] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=300.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:679 [2026-06-17 14:43:18.238] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=259.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:694 [2026-06-17 14:43:18.242] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.244] [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:694 [2026-06-17 14:43:18.244] [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:694 [2026-06-17 14:43:18.245] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.246] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.246] [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:694 [2026-06-17 14:43:18.247] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.248] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms 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:694 [2026-06-17 14:43:18.252] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.252] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.257] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.261] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.262] [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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.263] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.310] [DEBUG] QUERY OK source="tms_terminals" db=38.1ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:43:18], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:728 [2026-06-17 14:43:18.310] [INFO ] Terminal 98250623730001 back online [2026-06-17 14:43:18.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=38.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:694 [2026-06-17 14:43:18.312] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.313] [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:694 [2026-06-17 14:43:18.314] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.315] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.325] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.325] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.326] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.332] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.332] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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:694 [2026-06-17 14:43:18.334] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.335] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.336] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.339] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.340] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.341] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.342] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.342] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.344] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.344] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:694 [2026-06-17 14:43:18.345] [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:694 [2026-06-17 14:43:18.345] [INFO ] Offline device check completed. Found 36 offline devices, updated 1 statuses. [2026-06-17 14:43:18.345] [INFO ] Offline device check completed successfully [2026-06-17 14:43:25.496] [INFO ] Received status update for terminal 98251226730001 [2026-06-17 14:43:30.497] [INFO ] Incoming JSON payload: {"oid":"e6c88941-b23d-4f43-a9fb-ef8bab4d3282","sn":"98251226730001","uploadTime":"2026-06-17T22:46:38Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"ram_free_mb","value":"949","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"data_usage_mb","value":"6","timestamp":"2026-06-17T22:46:38Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T22:46:38Z"},{"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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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.resou (truncated) [2026-06-17 14:43:30.209] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fhsgACgiCCB4XQQZLzM6UhoPTzxXDTMONLJpJVdYOdhhezb7Uhx_nAtf", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZDUVhaREV1N1pnQVYrVWswUDhQVm1nWHcNbm9ub2RlQG5vaG9zdAAAC_UAAAAAAAAAAG0AAAAscGh4OmxwOnl6c3h1UytUODI5bHFaRC9qNGt3S1E9PTE3ODE3MDczNjQzNzluBgAb2AjWngFiABJ1AA.mcey2ZxMUjSaKFsy7npjZEM2Ivb3Qj9BIHxHIuU1M6I", "vsn" => "2.0.0"} [2026-06-17 14:43:34.373] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e6c88941-b23d-4f43-a9fb-ef8bab4d3282", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T22:46:38Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T22:46:38Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T22:46:38Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T22:46:38Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T22:46:38Z", "value" => "949"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T22:46:38Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T22:46:38Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T22:46:38Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T22:46:38Z", "value" => "6"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T22:46:38Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T22:46:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-06-17T22:46:38Z", "vendor" => "morefun"} [2026-06-17 14:43:34.373] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:43:34.373] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-06-17 14:43:34.373] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-06-17 14:43:34.374] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1368.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-06-17 14:43:34.375] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms 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-06-17 14:43:34.375] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:43:34.376] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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:98 [2026-06-17 14:43:34.377] [INFO ] Terminal updated: 98251226730001 [2026-06-17 14:43:34.388] [DEBUG] QUERY OK source="tms_terminals" db=11.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:43:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:43:34.388] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-06-17 14:43:34.389] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=12.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:629 [2026-06-17 14:43:34.407] [DEBUG] QUERY OK source="tms_terminals" db=17.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:43:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:43:34.441] [DEBUG] QUERY OK db=32.9ms idle=18.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e6c88941-b23d-4f43-a9fb-ef8bab4d3282", "2026-06-17T22:46:38Z", ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:43:34.441] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39792, oid: "e6c88941-b23d-4f43-a9fb-ef8bab4d3282", upload_time: "2026-06-17T22:46:38Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]} [2026-06-17 14:43:34.441] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T22:46:38Z", "value" => "morefun"} [2026-06-17 14:43:34.463] [DEBUG] QUERY OK db=21.8ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "morefun", "vendor", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314223, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.464] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T22:46:38Z", "value" => "kiosk_launcher"} [2026-06-17 14:43:34.474] [DEBUG] QUERY OK db=10.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "kiosk_launcher", "model", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314224, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.474] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T22:46:38Z", "value" => "1.0"} [2026-06-17 14:43:34.485] [DEBUG] QUERY OK db=10.3ms idle=11.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "1.0", "app_version", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314225, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.485] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T22:46:38Z", "value" => "13"} [2026-06-17 14:43:34.499] [DEBUG] QUERY OK db=13.5ms idle=11.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "13", "android_version", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314226, itemkey: "android_version", value: "13", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.499] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T22:46:38Z", "value" => "949"} [2026-06-17 14:43:34.532] [DEBUG] QUERY OK db=32.1ms idle=14.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "949", "ram_free_mb", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314227, itemkey: "ram_free_mb", value: "949", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.532] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T22:46:38Z", "value" => "WIFI"} [2026-06-17 14:43:34.555] [DEBUG] QUERY OK db=21.9ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "WIFI", "network_type", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314228, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.555] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T22:46:38Z", "value" => "true"} [2026-06-17 14:43:34.566] [DEBUG] QUERY OK db=10.7ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "true", "kiosk_active", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314229, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.567] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T22:46:38Z", "value" => ""} [2026-06-17 14:43:34.578] [DEBUG] QUERY OK db=11.2ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T22:46:38Z", "sim_operator", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314230, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.578] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"} [2026-06-17 14:43:34.592] [DEBUG] QUERY OK db=13.5ms idle=12.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "UNKNOWN", "sim_number", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314231, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.593] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"} [2026-06-17 14:43:34.621] [DEBUG] QUERY OK db=27.9ms idle=14.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "UNKNOWN", "sim_iccid", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314232, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.621] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"} [2026-06-17 14:43:34.646] [DEBUG] QUERY OK db=24.3ms queue=0.2ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "UNKNOWN", "sim_imsi", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314233, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.646] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"} [2026-06-17 14:43:34.678] [DEBUG] QUERY OK db=31.4ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "UNKNOWN", "sim_iccid2", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314234, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.679] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T22:46:38Z", "value" => "UNKNOWN"} [2026-06-17 14:43:34.701] [DEBUG] QUERY OK db=22.4ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "UNKNOWN", "sim_imsi2", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314235, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.702] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T22:46:38Z", "value" => "6"} [2026-06-17 14:43:34.720] [DEBUG] QUERY OK db=18.1ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "6", "data_usage_mb", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314236, itemkey: "data_usage_mb", value: "6", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.720] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T22:46:38Z", "value" => "0"} [2026-06-17 14:43:34.731] [DEBUG] QUERY OK db=10.1ms idle=19.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "0", "mobile_data_mb", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314237, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:43:34.732] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T22:46:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ...} [2026-06-17 14:43:34.755] [DEBUG] QUERY OK db=23.0ms idle=11.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T22:46:38Z", "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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., "installed_apps", 39792, ~N[2026-06-17 14:43:34], ~N[2026-06-17 14:43:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:43:34.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314238, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), 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 Resou" <> ..., timestamp: "2026-06-17T22:46:38Z", message: nil, status_log_id: 39792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:43:34], updated_at: ~N[2026-06-17 14:43:34]}} [2026-06-17 14:44:04.415] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:44:04.415] [INFO ] Incoming JSON payload: {"oid":"14b14bde-d0a1-4370-94c4-65a32855d507","sn":"98251226730002","uploadTime":"2026-06-17T14:43:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"ram_free_mb","value":"793","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:43:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:43: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.wif (truncated) [2026-06-17 14:44:04.416] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "14b14bde-d0a1-4370-94c4-65a32855d507", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:43:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:43:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:43:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:43:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:43:14Z", "value" => "793"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:43:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:43:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:43:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:43:14Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:43:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:43: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:43:14Z", "vendor" => "morefun"} [2026-06-17 14:44:04.416] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:44:04.416] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:44:04.416] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:44:04.418] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.1ms idle=483.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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-06-17 14:44:04.418] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=336.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-06-17 14:44:04.419] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:44:04.420] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:44:04.420] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:44:04.435] [DEBUG] QUERY OK source="tms_terminals" db=14.4ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:44:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:44:04.435] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:44:04.437] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=15.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:44:04.447] [DEBUG] QUERY OK source="tms_terminals" db=10.0ms queue=0.1ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:44:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:44:04.475] [DEBUG] QUERY OK db=27.4ms idle=10.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "14b14bde-d0a1-4370-94c4-65a32855d507", "2026-06-17T14:43:14Z", ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:44:04.476] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39793, oid: "14b14bde-d0a1-4370-94c4-65a32855d507", upload_time: "2026-06-17T14:43:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]} [2026-06-17 14:44:04.476] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:43:14Z", "value" => "morefun"} [2026-06-17 14:44:04.503] [DEBUG] QUERY OK db=26.9ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "morefun", "vendor", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314239, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.503] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:43:14Z", "value" => "kiosk_launcher"} [2026-06-17 14:44:04.523] [DEBUG] QUERY OK db=19.2ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "kiosk_launcher", "model", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314241, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.524] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:43:14Z", "value" => "1.0"} [2026-06-17 14:44:04.539] [DEBUG] QUERY OK db=14.6ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "1.0", "app_version", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314243, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.539] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:43:14Z", "value" => "13"} [2026-06-17 14:44:04.568] [DEBUG] QUERY OK db=28.9ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "13", "android_version", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314245, itemkey: "android_version", value: "13", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.569] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:43:14Z", "value" => "793"} [2026-06-17 14:44:04.601] [DEBUG] QUERY OK db=31.6ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "793", "ram_free_mb", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314247, itemkey: "ram_free_mb", value: "793", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.601] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:43:14Z", "value" => "WIFI"} [2026-06-17 14:44:04.616] [DEBUG] QUERY OK db=14.8ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "WIFI", "network_type", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314249, itemkey: "network_type", value: "WIFI", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.617] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:43:14Z", "value" => "true"} [2026-06-17 14:44:04.646] [DEBUG] QUERY OK db=28.2ms queue=0.2ms idle=16.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "true", "kiosk_active", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314251, itemkey: "kiosk_active", value: "true", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.646] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:43:14Z", "value" => ""} [2026-06-17 14:44:04.689] [DEBUG] QUERY OK db=42.6ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-06-17T14:43:14Z", "sim_operator", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314253, itemkey: "sim_operator", value: nil, timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.690] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"} [2026-06-17 14:44:04.709] [DEBUG] QUERY OK db=18.7ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "UNKNOWN", "sim_number", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314255, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.710] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"} [2026-06-17 14:44:04.732] [DEBUG] QUERY OK db=22.4ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "UNKNOWN", "sim_iccid", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314257, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.733] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"} [2026-06-17 14:44:04.765] [DEBUG] QUERY OK db=32.0ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "UNKNOWN", "sim_imsi", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314259, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.765] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"} [2026-06-17 14:44:04.789] [DEBUG] QUERY OK db=23.0ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "UNKNOWN", "sim_iccid2", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314261, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.789] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:43:14Z", "value" => "UNKNOWN"} [2026-06-17 14:44:04.816] [DEBUG] QUERY OK db=26.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "UNKNOWN", "sim_imsi2", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314263, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.816] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:43:14Z", "value" => "31"} [2026-06-17 14:44:04.859] [DEBUG] QUERY OK db=42.0ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "31", "data_usage_mb", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314265, itemkey: "data_usage_mb", value: "31", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.859] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:43:14Z", "value" => "0"} [2026-06-17 14:44:04.880] [DEBUG] QUERY OK db=20.1ms queue=0.1ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43:14Z", "0", "mobile_data_mb", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314267, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:04.881] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:43: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...} [2026-06-17 14:44:04.903] [DEBUG] QUERY OK db=22.1ms idle=22.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:43: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., "installed_apps", 39793, ~N[2026-06-17 14:44:04], ~N[2026-06-17 14:44:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:44:04.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314269, 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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ..., timestamp: "2026-06-17T14:43:14Z", message: nil, status_log_id: 39793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:44:04], updated_at: ~N[2026-06-17 14:44:04]}} [2026-06-17 14:44:22.270] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 31µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fhsgACgiCCB4XQQZLzM6UhoPTzxXDTMONLJpJVdYOdhhezb7Uhx_nAtf", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://demo.ctrmv.com:4019/assets/app.css", "1" => "http://demo.ctrmv.com:4019/assets/app.js"}, "token" => "SFMyNTY.g2gDaAR3AnYxbQAAABZDUVhaREV1N1pnQVYrVWswUDhQVm1nWHcNbm9ub2RlQG5vaG9zdAAADHMAAAAAAAAAAG0AAAAscGh4OmxwOlF4ZlRaVTExa01jNVRmKzUwbkRKOXc9PTE3ODE3MDc0MTAyMDluBgBkmwnWngFiABJ1AA.yx7t57VnA6Vrd8DQcPpBFaAUW5nfag5GBsTX9cy7hSY", "vsn" => "2.0.0"} [2026-06-17 14:45:04.742] [INFO ] Received status update for terminal 98251226730002 [2026-06-17 14:45:04.742] [INFO ] Incoming JSON payload: {"oid":"5daf2cf4-a810-4549-9733-64875474c358","sn":"98251226730002","uploadTime":"2026-06-17T14:44:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"ram_free_mb","value":"813","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"data_usage_mb","value":"31","timestamp":"2026-06-17T14:44:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-06-17T14:44: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), 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.wif (truncated) [2026-06-17 14:45:04.743] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5daf2cf4-a810-4549-9733-64875474c358", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:44:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-06-17T14:44:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:44:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:44:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-06-17T14:44:14Z", "value" => "813"}, %{"itemkey" => "network_type", "timestamp" => "2026-06-17T14:44:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-06-17T14:44:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-06-17T14:44:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-06-17T14:44:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-06-17T14:44:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-06-17T14:44:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-06-17T14:44:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-06-17T14:44:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-06-17T14:44:14Z", "value" => "31"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-06-17T14:44:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-06-17T14:44: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), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), 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), Kiosk Launcher (com.frog8.kiosklauncher), 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), 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), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-06-17T14:44:14Z", "vendor" => "morefun"} [2026-06-17 14:45:04.743] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-06-17 14:45:04.743] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-06-17 14:45:04.743] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-06-17 14:45:04.744] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=809.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-06-17 14:45:04.744] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=504.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.`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-06-17 14:45:04.744] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-06-17 14:45:04.745] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-06-17 14:45:04.745] [INFO ] Terminal updated: 98251226730002 [2026-06-17 14:45:04.757] [DEBUG] QUERY OK source="tms_terminals" db=11.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-06-17 14:45:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:121 [2026-06-17 14:45:04.757] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-06-17 14:45:04.759] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=12.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:629 [2026-06-17 14:45:04.775] [DEBUG] QUERY OK source="tms_terminals" db=15.7ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-06-17 14:45:04], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:131 [2026-06-17 14:45:04.807] [DEBUG] QUERY OK db=31.2ms idle=16.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5daf2cf4-a810-4549-9733-64875474c358", "2026-06-17T14:44:14Z", ~N[2026-06-17 14:45:04], ~N[2026-06-17 14:45:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:133 [2026-06-17 14:45:04.807] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 39795, oid: "5daf2cf4-a810-4549-9733-64875474c358", upload_time: "2026-06-17T14:44:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:45:04], updated_at: ~N[2026-06-17 14:45:04]} [2026-06-17 14:45:04.807] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-06-17T14:44:14Z", "value" => "morefun"} [2026-06-17 14:45:04.837] [DEBUG] QUERY OK db=29.9ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:14Z", "morefun", "vendor", 39795, ~N[2026-06-17 14:45:04], ~N[2026-06-17 14:45:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:45:04.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314272, itemkey: "vendor", value: "morefun", timestamp: "2026-06-17T14:44:14Z", message: nil, status_log_id: 39795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:45:04], updated_at: ~N[2026-06-17 14:45:04]}} [2026-06-17 14:45:04.838] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-06-17T14:44:14Z", "value" => "kiosk_launcher"} [2026-06-17 14:45:04.855] [DEBUG] QUERY OK db=17.0ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:14Z", "kiosk_launcher", "model", 39795, ~N[2026-06-17 14:45:04], ~N[2026-06-17 14:45:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:45:04.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314274, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-06-17T14:44:14Z", message: nil, status_log_id: 39795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:45:04], updated_at: ~N[2026-06-17 14:45:04]}} [2026-06-17 14:45:04.856] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-06-17T14:44:14Z", "value" => "1.0"} [2026-06-17 14:45:04.880] [DEBUG] QUERY OK db=23.5ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:14Z", "1.0", "app_version", 39795, ~N[2026-06-17 14:45:04], ~N[2026-06-17 14:45:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:45:04.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 314276, itemkey: "app_version", value: "1.0", timestamp: "2026-06-17T14:44:14Z", message: nil, status_log_id: 39795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-06-17 14:45:04], updated_at: ~N[2026-06-17 14:45:04]}} [2026-06-17 14:45:04.880] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-06-17T14:44:14Z", "value" => "13"} [2026-06-17 14:45:04.917] [DEBUG] QUERY OK db=36.9ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-06-17T14:44:14Z", "13", "android_version", 39795, ~N[2026-06-17 14:45:04], ~N[2026-06-17 14:45:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:143 [2026-06-17 14:45:16.690] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_shamanth"}} terminating ** (stop) :ping_timeout Last message: :ping State: %Tortoise.Connection{client_id: "phoenix_client_shamanth", 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_shamanth", 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/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.4007223630.1693974529.210895>, opts: [client_id: "phoenix_client_shamanth", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_shamanth"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_shamanth", online_devices: %{}}, initial_args: [client_id: "phoenix_client_shamanth"]}}